git_thailand 发表于 2022-7-6 07:59:30

需要Lisp:创建矩形b


 
需要lisp在矩形(黑色)之间创建矩形(红色)

BlackBox 发表于 2022-7-6 08:03:05

考虑偏移、修剪和Pedit或Pedit命令。

BIGAL 发表于 2022-7-6 08:07:10

另一种方法是用lisp选取两个对角点xoff yoff,可以不同的绘制新的矩形。如果矩形在角度上,则回答3pt。
 
我会去3pt你可以打赌,如果你使它平方只需要你需要一个角度版本。

ketxu 发表于 2022-7-6 08:10:32

Git_thailand,请重新阅读您发布的所有离题内容。请详细说明你想要什么。

pBe 发表于 2022-7-6 08:13:26

 
看起来很简单。唯一存在的实体是黑色柱脚?你还想再创造5个?或者只有4个不包括内部矩形?

Tharwat 发表于 2022-7-6 08:18:32

 
我想只有两个,不是吗?

pBe 发表于 2022-7-6 08:20:57

 
哦,是的。。。但也可能是四个,这取决于你如何看待它。5即使您将中间一个作为一个单独的实体包括在内。
 
哦,好吧。。。。
 

(defun c:BeatBox (/ _HiLow _Box _trans rec pts low high)
(defun _HiLow (lev lst)
   (list
   (apply lev (mapcar 'car lst))
   (apply lev (mapcar 'cadr lst))
   )
)
(defun _Box (p1 p2)
   (command "_rectang" "_non" p1 "_non" p2)
)
(setq _trans (lambda (pt) (trans pt 0 1)))
(if (and
   (setq dist (cond
                   (   (getdist
                           (strcat "\nOffset Distance"
                               (if dist (strcat " <" (rtos dist) ">: ") ": ")
                           )
                     )
                   )
                   (   dist   )
               )
         )
   (setq rec (ssget
      '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))
      )
   ))
   (progn
    (repeat(setq i (sslength rec))
    (setq pts (mapcar 'cdr
       (vl-remove-if-not
         '(lambda (j)
   (= (car j) 10)
   )
         (entget (setq e (ssname rec (setq i (1- i)))))
       )
      )
pts (mapcar '_trans pts)
   )
   (setq Low(_HiLow 'min pts)
High (_HiLow 'max pts)
   )
(_Box (list (car low) (+ (cadr low) dist))
       (list (car high) (- (cadr high) dist))
)
(_Box (list (+ (car low) dist) (cadr low))
       (list (- (car high) dist) (cadr high))
)
)
   )
)
)


 
HTH公司
更新日期:

git_thailand 发表于 2022-7-6 08:23:15

在两个矩形之间创建矩形
 

ReMark 发表于 2022-7-6 08:27:38

你真的需要一个lisp例程来完成这个任务吗?真正地

pBe 发表于 2022-7-6 08:30:40

 
哎呀。我第一次是对的。确实是4。
 
但话说回来。。。
 
 
我在想我自己。
页: [1] 2
查看完整版本: 需要Lisp:创建矩形b