Grigs 发表于 2022-7-6 07:42:21

Wall Poche口齿不清

我知道这是怎么回事,只是无法编写代码。我想知道是否有人可以帮忙。基本上,你会选择3分。前2个决定宽度,第3个决定长度。然后,它将使用宽度和长度创建一个多边形。我知道这听起来很奇怪,但这真的会有帮助。
 
谢谢

MSasu 发表于 2022-7-6 07:47:20

像这样的?
;;; 3 Points Polygon (11-VII-2012)
(defun c:3PP( / point1st point2nd point3rd)
(while (and (setq point1st (getpoint "\nPick insertion point: "))
            (setq point2nd (getpoint point1st "\nIndicate width: "))
            (setq point3rd (getpoint point1st "\nIndicate length ")))
(command "_RECTANGLE" "_non" point1st
                     "_non" (list (+ (carpoint1st) (distance point1st point3rd))
                                    (+ (cadr point1st) (distance point1st point2nd))))
)

(princ)
)

Grigs 发表于 2022-7-6 07:50:01

有点。它绘制了一个矩形。我需要的是一条折线。

Tharwat 发表于 2022-7-6 07:54:35

上传一张显示你需要的图片。

MSasu 发表于 2022-7-6 07:55:46

矩形只不过是一个多段线实体。

Grigs 发表于 2022-7-6 08:00:38

这有帮助吗?
 
 

MSasu 发表于 2022-7-6 08:03:56

所以你实际上是在寻找一条宽度不同于0的单段多段线?

Grigs 发表于 2022-7-6 08:06:00

对的宽度将由选择的前2个点确定。
 
我知道图像看起来与我解释的有点不同,但老实说,我所需要的只是创建它的基本代码。我可以调整它,让它看起来像我想要的那样。

Tharwat 发表于 2022-7-6 08:10:27


 

(defun c:Test (/ p1 p2 vl gr) (vl-load-com)
(if (and (setq p1 (getpoint "\n Specify first point :"))
          (setq p2 (getpoint p1 "\n Next point :"))
   )
   (progn
   (vl-cmdf "_.pline" "_non" p1 "_non" p2 "")
   (setq vl (vlax-ename->vla-object (entlast)))
   (while (eq (car (setq gr (grread t 15 0))) 5)
       (redraw)
       (grdraw p1 (polar p1 (+ (angle p1 p2) (/ pi 2.)) (distance p1 (cadr gr))) 1 0)
       (vla-put-constantwidth vl (distance p1 (cadr gr)))
   )
   )
   (princ)
)
(redraw)
(princ)
)

Grigs 发表于 2022-7-6 08:11:03

这是一种有趣的方式。似乎这两个点定义了长度,然后它有一个橡胶带效应,它决定了宽度。如果有一种方法可以输入宽度或为宽度选择2个点,那就太好了。
页: [1] 2
查看完整版本: Wall PocheLisp程序