gvlisnas 发表于 2022-7-6 15:21:14

将2条线/线连接成一个sin

您好,
 
有人能帮我吗?我正在研究轮廓的自动矢量化,我迫切需要一个lisp来实现这一点:
 
假设我有很多柱脚线和直线,我需要将它们连接在一条多段线中。这是一个lisp,它将:
 
1) 询问第一条线路/线路
2) 询问第二条线路/线路
3) 将线转换为柱脚线
4) 在它们最近的顶点之间绘制一条pline
5) 连接3个柱脚
6) 询问第一条线路/线路
等等
 
 
我需要这样做,即要求第一行/多行(单击),第二行(单击完成),第一行(单击),第二行(单击完成),这样我就不会每次调用lisp。
 
请参阅所附图片。
 

VovKa 发表于 2022-7-6 15:29:56


(defun C:TEST (/ Fuzz)
(setq Fuzz (getreal "\nEnter fuzz distance: "))
(while t
   (command "_.PEDIT"
   "_M"
   (entsel)
   (entsel)
   ""
   "_J"
   "_J"
   "_A"
   Fuzz
   ""
   )
)
)

gvlisnas 发表于 2022-7-6 15:36:44

谢谢你,vovka。
 
使用模糊距离确实有效,但问题是,在选择一条直线后,它会问我pedit问题“将直线和圆弧转换为多段线?”然后给我pedit命令的选择。这可以自动完成吗?也就是说,输入默认答案“是”将其转换为多段线,然后不提供pedit命令的选择?因为我必须按ESC键,这将我抛出lisp,我必须重新进入lisp。

ASMI 发表于 2022-7-6 15:42:32

 
设置Peditacept=1

gvlisnas 发表于 2022-7-6 15:45:18

完美的
 
谢谢你们俩。
 
这可以在没有模糊距离的情况下完成吗?反问句

ASMI 发表于 2022-7-6 15:49:10

删除(setq Fuzz(getreal“\n输入模糊距离:”)行
并将Fuzz变量inside(命令表达式)更改为比通常的线间距大一些的值。我们无法知道图形的尺寸。

ASMI 发表于 2022-7-6 15:57:33

没有模糊请求:
 
(defun c:jln(/ l1 l2 fz)
(setvar "PEDITACCEPT" 1)
(if
   (and
   (setq l1(entsel "\nSelect first line > "))
   (setq l2(entsel "\nSelect second line > "))
   (setq fz(distance(cadr l1)(cadr l2)))
   (vl-cmdf "_.pedit" "_m" (car l1)(car l2) "" "_j" "_j" "_a" fz "")
   ); end and
   (c:jln)
   ); end if
(princ)
); end c:jln

filan1a 发表于 2022-7-6 16:04:47

非常感谢。
我需要那个密码
 

gvlisnas 发表于 2022-7-6 16:05:34

很 完美!!
 
非常感谢!
 

alanjt 发表于 2022-7-6 16:14:23

如果你不想改变培他西普(我无法想象为什么有人不想改变它)
你可以这样做:
(if
(equal (getvar 'peditaccept) 1)
(command "pedit" "m" lines "" "j" "" "")
(command "pedit" "m" lines "" "y" "j" "" "")
);if
我从我的日常生活中吸取了这一点,它将很快加入我的直线/普林线/弧。
页: [1] 2
查看完整版本: 将2条线/线连接成一个sin