Brandonhar 发表于 2022-7-5 22:51:23

自定义采购订单的LISP例程

我正在寻找一些常规帮助。。。我确信有一种方法可以实现这一点,但我对LISP编程场景还不熟悉。任何帮助我开始将不胜感激!!!
 
这是我要找的。。。我希望用户选择第一个点,选择对象周围的“路径”(当然可以灵活使用捕捉),然后选择最后一个点。程序在对象周围保持一定的标准?我附上了几个PDF文件,可能有助于更好地解释这一点。。。
 
再次感谢您的帮助!!!
用户输入。pdf
成品柱脚。pdf

marko_ribar 发表于 2022-7-5 23:01:49

如果你手动绘制比让程序来做要可靠得多,而且这个例程的目的还不清楚。。。你可以快速地画出这张图并打分,但我只是看不出你可以在哪里使用例程来完成类似的任务,以便完成更大项目的某些步骤。。。

Brandonhar 发表于 2022-7-5 23:04:03

感谢您的回复。。。。多段线的目的是计算从卧室门到最近出口的“行程距离”。我们必须在35英尺以内。目前,我们正在手动绘制p线,但似乎需要大约2分钟才能实现。(我们当前的过程是在角落周围绘制所需的圆,然后从门的中心到圆的切线绘制线,我们修剪这些线并将所有这些线连接到一条p线,这样我们就可以“列出”该线以获得测量值。)
 
我只是觉得Lisp程序的例行程序需要2分钟到几秒钟才能完成??我很想知道除了常规之外的另一个技巧,如果你有一个。。。我每天都在学习新的东西!
 
再次感谢您的回复。。。

marko_ribar 发表于 2022-7-5 23:09:36

如果这就是目的,我只需要使用pline命令并选取这3个点,然后从“属性”选项板中获取长度。。。只需在没有任何弧的情况下近似选取它们,长度会稍大一些,但如果是逃生路线,则最好在总体计算中考虑比较近距离更远的距离。。。点击1,2,3次,就这样,没有例行程序-作业完成了。。。

Brandonhar 发表于 2022-7-5 23:17:36

我很感激marko_ribar。。。
 
还有谁能帮上忙吗?

BIGAL 发表于 2022-7-5 23:24:31

简单的小宏
 
(defun pll ( / obj )
(command "_pline")
(while (= (getvar "cmdactive") 1 ) (command pause)
)
(setq obj (vlax-ename->vla-object (car (entlast))))
(setq plen (vlax-get-property obj 'length))
(alert (strcat "Pline is " (rtos plen 2 0) " long"))
(vla-erase obj) ; if want to remain remove line
)
(pll)

marko_ribar 发表于 2022-7-5 23:33:10


(defun c:plarcedcorner ( / osm p1 p2 p3 r LM:PointCircleTangents p1plst p3plst p11 p12 p31 p32 p1p p3p p13pm p13pa obj plen )

(vl-load-com)

(setq osm (getvar 'osmode))
(setq p1 (getpoint "\nPick or specify start point : "))
(setq p2 (getpoint "\nPick or specify middle corner point : " p1))
(setq p3 (getpoint "\nPick or specify end point : " p2))
(initget 7)
(setq r (getdist "\nPick or specify radius of arc around middle corner point : " p2))

;; Point-Circle Tangents-Lee Mac
;; Returns the two points for which a line from 'pt' to each point returned
;; is tangent to the circle with centre c1 and radius r1

(defun LM:PointCircleTangents ( pt c1 r1 / a1 a2 d1 )
   (if (< r1 (setq a1 (angle c1 pt) d1 (distance pt c1)))
   (progn
       (setq a2 (atan (sqrt (- (* d1 d1) (* r1 r1))) r1))
       (list
         (polar c1 (+ a1 a2) r1)
         (polar c1 (- a1 a2) r1)
       )
   )
   )
)

(setvar 'osmode 0)
(setq p1plst (LM:PointCircleTangents p1 p2 r))
(setq p3plst (LM:PointCircleTangents p3 p2 r))

(setq p11 (car p1plst))
(setq p12 (cadr p1plst))
(setq p31 (car p3plst))
(setq p32 (cadr p3plst))

(if (> (min (distance p11 p31) (distance p11 p32)) (min (distance p12 p31) (distance p12 p32)))
   (setq p1p p11)
   (setq p1p p12)
)
(if (> (min (distance p31 p11) (distance p31 p12)) (min (distance p32 p11) (distance p32 p12)))
   (setq p3p p31)
   (setq p3p p32)
)

(setq p13pm (mapcar '(lambda ( a b ) (/ (+ a b) 2.0)) p1p p3p))
(setq p13pa (polar p2 (angle p2 p13pm) r))

(command "_.pline" p1 p1p "_A" "_S" p13pa p3p "_L" p3 "")
(setq obj (vlax-ename->vla-object (entlast)))
(setq plen (vlax-get-property obj 'length))
(prompt (strcat "Pline is : " (rtos plen 2 15) " long"))
(setvar 'osmode osm)
(princ)
)
M.R。

Brandonhar 发表于 2022-7-5 23:34:38

真 的!!你们都很棒!!!非常感谢!!
 
马可·里巴:这正是我想要的。我将能够在此基础上提供更多功能!!你太棒了!
 
比加尔:也谢谢你!!!

ROLANDO JR 发表于 2022-7-5 23:39:44

你好,马可·里巴!
 
 
我对Brandonhar也有同样的问题,但我的是自定义线型。我需要先创建自定义线型。
 
 
我附上了一张图片给你,让你明白我想说什么。
 
 
非常感谢。


MSasu 发表于 2022-7-5 23:47:19

小罗兰多,你已经有了一条专门的线索。请不要分裂讨论!
页: [1] 2
查看完整版本: 自定义采购订单的LISP例程