aloy 发表于 2022-7-6 07:42:28

将一系列行转换为

如何将一系列线段转换为多段线,或通过修改以下代码将其绘制为pline:

(setq p1(cadr (car l)))
(while (/= l nil)
(setq l(cdr l))
(setq p2(cadr (car l)))
(command "line""_NON" p1 "_NON" p2 "")
(setq p1 p2)
)

提前感谢,
芦荟

fixo 发表于 2022-7-6 07:48:52

如果需要使pline闭合,请尝试此代码,并在末尾点击“CL”

(defun C:demo()
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(command "._pline")
(while (= 1 (logand 1 (getvar "cmdactive")))
(command pause))
(setvar "osmode" osm)
(princ)
)

 
~'J'~

aloy 发表于 2022-7-6 07:52:15

嗨,菲索,
您提供的代码本身运行良好,就像autoCad中的pline一样。我需要的是,当提示给出点时,从列表l中提取点。
当做
芦荟

Lee Mac 发表于 2022-7-6 07:55:53

查询结果多段线的DXF数据。

fixo 发表于 2022-7-6 08:00:04

试试吧

(defun C:demo(/ closed osm ptlist)
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq ptlist [ your points ])
(setq closed T ;|or nil if open|
(command "._pline")
(mapcar 'command ptlist)
(if closed
(command "CL")
(command "")
(setvar "osmode" osm)
(princ)
)

Stefan BMR 发表于 2022-7-6 08:03:31

芦荟,
从代码中,列表必须类似于((a(x y z))(b(u v w))。。。
在这种情况下,此代码将绘制多段线而不是直线。
(command "PLINE")
(foreach x l
(command "_non" (cadr x))
)
(command "")

BlackBox 发表于 2022-7-6 08:08:28

 
有一件事尚未提及,即在选择集上使用PEDIT命令,例如:
 

(defun c:FOO (/ ss)
(if (setq ss (ssget "_:L" '((0 . "LINE"))))
   (command "._pedit" "multiple" ss "" "y" "")
   (prompt "\n** Nothing selected ** ")
   )
(princ)
)
。。。如果你想加入队伍,你可以根据自己的喜好进行裁剪。。
 
HTH公司

aloy 发表于 2022-7-6 08:09:15

斯特凡,
谢谢。好极了
当做
芦荟

aloy 发表于 2022-7-6 08:14:01

你好,RenderMan,
它不起作用。它要求选择,最后不转换。如果你喜欢的话,我可以把列表贴出来,你可以试试。
当做
芦荟

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

[缩进][缩进]
有一件事尚未提及,那就是在选择集上使用PEDIT命令
[/缩进]
你好,RenderMan,
它不起作用。它要求选择,最后不转换。如果你喜欢的话,我可以把列表贴出来,你可以试试。
[/缩进]
重申。。。该函数提示用户输入图形中已存在的线的选择集(而不是点列表),然后将有效的选择集转换为多段线。此函数不接受任何参数(即点列表)。
 
你在这个帖子中提到了不同的任务;这一提议决不是对他们每个人的答案。
页: [1] 2
查看完整版本: 将一系列行转换为