怎样用CAD在矩形外再画一个矩形?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用CAD在矩形外再画一个矩形?相关的知识,希望对你有一定的参考价值。

后来花的矩形长,宽都比原来的矩形大50mm?

    AutoCAD再绘制一个矩形的话,使用偏移命令【OFFSET】或快捷键命令【O】

    如果有很多矩形要进行偏移的话,可以使用编程来实现,选择矩形,输入偏移距离就可以偏移完成。

    (defun C:tes ( / #r1 &k1 &kw1 &ob1 &ob2 dis1 dis2 ent1 pt1 pt2 ss x)
     (if (null vlax-dump-object) (vl-load-com) );加载vlax函数
     (if (and (setq &kw1 (ssget \'((0 . "LWPOLYLINE") (70 . 1))));选择封闭多段线
          (setq #r1 (getdist "\\n请输入偏移距离"))
          (> #r1 0);距离是正值
         )
      (progn;;1
       (while (setq &k1 (ssname &kw1 0));对象分析
        (setq &kw1 (ssdel &k1 &kw1))
        (setq ss (mapcar \'cdr (vl-remove-if \'(lambda (X) (/= 10 (car x))) (entget &k1))));取得多段线坐标
        (if (and (= (length ss) 4);如果是4个点,符合矩形一个条件;进入下一步
             (= (distance (car ss) (caddr ss)) (distance (cadr ss) (cadddr ss)));对角线相同
            )
         (progn;;2
          (setq &ob1 (vlax-ename->vla-object &k1))
          (vla-GetBoundingBox &ob1 \'pt1 \'pt2);提取包围框
          (setq pt1 (vlax-safearray->list pt1) pt2 (vlax-safearray->list pt2))
          (setq pt1 (mapcar \'(lambda (x) (* x 0.5)) (mapcar \'+ pt1 pt2)));取得矩形中心点
          (if (and (setq pt2 (inters (car ss) (caddr ss) (cadr ss) (cadddr ss)));对角线有交点
              (<= (distance pt1 pt2) 0.00001);对角线与中心点重合
              );确认是矩形
           (progn;;3
            (setq pt2 (mapcar \'(lambda (x) (* x 0.5)) (mapcar \'+ (car ss) (cadr ss))))
            (setq dis1 (distance pt1 pt2))
            (setq pt2 (mapcar \'(lambda (x) (* x 0.5)) (mapcar \'+ (caddr ss) (cadr ss))))
            (setq dis2 (distance pt1 pt2))
            (if (< dis2 dis1) (setq dis1 dis2) )
            (setq dis1 (* 0.1 dis1))
            (setq ent1 (entlast))
            (vla-offset &ob1 dis1)
            (if (and (setq ent1 (entnext ent1));4
                 (setq dis1 (vlax-curve-getDistAtParam &ob1 (vlax-curve-getEndParam &ob1)))
                 (> dis1 0)
                )
             (progn;;4
              (setq &ob2 (vlax-ename->vla-object ent1))
              (setq dis2 (vlax-curve-getDistAtParam &ob2 (vlax-curve-getEndParam &ob2)))
              (vla-delete &ob2)
              (if (> dis2 dis1) (vla-offset &ob1 #r1) (vla-offset &ob1 (* #r1 -1)) )
             );progn;4
            );if;4
           );progn;3
          );if;3
         );progn;2
        );if;2
       );while
      );progn;1
     );if;1;矩形的特点,对角线相同,4个点,对角线有交点并与中心点重合
     (prin1)
    );;复制到记事本,以【.lsp】为后缀命名,打开AutoCAD,autolisp加载,命令【TES】
参考技术A 采用“偏移”。画好里面的矩形之后,偏移到矩形外面50mm就行了 参考技术B 先作一个矩形。然后使用偏移命令 O ,然后输入偏移距离50,然后选择偏移对象,然后指定偏移所在的一侧:点选原有矩形后再在矩形之外单击一下,OK了。本回答被提问者采纳 参考技术C

你好,你这问题,最快的方法,非“偏移”命令不可,选择偏移工具(附图里面左边工具栏上面下来第4个)键盘输入50——选择第一个矩形——把鼠标的光标移到第一个矩形外面就OK

参考技术D 这。。。
偏移就可以了
画好里面的矩形后,
输入快捷键o,空格。
它提示你输入偏移量,输25(也许你要的是50)。
然后点一下矩形,再在矩形外面随便一个点一下,就行了。

急!!!opencv做目标跟踪的时候,怎样把目标用矩形圈出来

源码是怎样的 或者说说方法也可以 求高手 谢谢

参考技术A cvFindContours( temp, storage, &cont, sizeof(CvContour),
CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
opencv里面有这样一个函数,可以把目标找出来,多个目标用参数cont指针来指向
CvRect r = ((CvContour*)cont)->rect; 这个呢,可以得到这些目标的矩形区域,你再画出来就可以了追问

目标检测的时候就有cvFindContour这个函数,请问是不是目标跟踪的时候直接用就行了?这么简单吗我只用两个函数就实现了吗? 谢谢

追答

可能你在检测的时候,有一些噪音,可能把噪音也当成目标框起来了,这个时候你就要将比较小的目标去掉,当矩形的面积小于一个阈值的时候,就把这些目标去掉。&cont是指针形式的,依次指向图像中的多个目标,你可以用一个for循环来把每个目标框出来

本回答被提问者采纳
参考技术B 在求轮廓前,还有很多处理工作,这些工作设计不好的话,影响到结果的好坏

以上是关于怎样用CAD在矩形外再画一个矩形?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用4个坐标点画矩形

急!!!opencv做目标跟踪的时候,怎样把目标用矩形圈出来

MFC如何画矩形

C# WPF 怎么画点?怎么画矩形?

MFC绘制矩形

html 里怎么画一个矩形