wanhongron 发表于 2022-5-12 09:35:50

多段线连接不能统一线宽

各位侠,网上下载的多段线连接小程序,但不能统一线宽,请大侠帮优化一下

xyp1964 发表于 2022-5-12 13:04:24

(defun c:pjj () (c:pljoinfuzz))
(defun c:pljoinfuzz ()
"多段线线模糊连接"
(setq        cc (getvar "cmdecho")
        pc (getvar "PEDITACCEPT")
)
(setvar "cmdecho" 0)
(if (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16"))
    (setvar "PEDITACCEPT" 0)
)
(setq fuzz (getdist "\n模糊距离 <0.1>: "))
(setq pw (getdist "\n线宽 <0>: "))
(if (= fuzz nil)
    (setq fuzz 0.1)
)
(if (= pw nil)
    (setq pm 0)
)
(setq qf '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE")))
(princ "\n请选择需要连接的直线,圆弧,多义线: ")
(while (and (setq ss1 (ssget qf)) (> (sslength ss1) 1))
    (setq et (cdr (assoc 0 (entget (ssname ss1 0)))))
    (if        (member et '("LINE" "ARC"))
      (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "")
      (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz "")
    )
    (setq s1 (entlast))
    (command "pedit" s1 "w" pw "")
)
(setvar "cmdecho" cc)
(if A2k4
    (setvar "PEDITACCEPT" pc)
)
(princ)
)
(princ)

表骑马实开车 发表于 2022-5-19 09:53:16

wanhongron 发表于 2022-5-18 17:18
各位侠,有好用点的源码吗?能使连接后的多段线全局宽度同最先选择的一致,不用每次都要定义一次。

最先选择的是什么意思?   院长写的就可以,你把这个改成获得的线宽就可以了(setq pw (getdist "\n线宽 <0>: "))

llsheng_73 发表于 2022-5-12 20:40:01

wanhongron 发表于 2022-5-12 15:11
非常谢谢热心的xyp1964侠,好像还不能实现,我的想法是多段线连接后能连接多段线并按照最先选择的对象统一 ...

先不考虑宽度直接连接,然后每条线读取它的所有宽度取最大值作为全局宽度进行修改
另外,线宽和宽度是两个概念。。。

wanhongron 发表于 2022-5-12 15:11:37

非常谢谢热心的xyp1964侠,好像还不能实现,我的想法是多段线连接后能连接多段线并按照最先选择的对象统一线宽,不用每次再改线宽。

mj0000 发表于 2022-5-12 18:13:05

用(ssname SS 0)取出第一个图元,获取线宽,后面根据这个线宽修改图元就行

guosheyang 发表于 2022-5-13 07:27:32

提取第一个的线宽然后修改合并后的宽度属性即可

e2002 发表于 2022-5-13 10:17:19

再增加一个切换设置,用户可选width为:第一/第二个对象的统一/最大/最小/平均/宽度,用户指定宽度,第一个对象的末段结尾宽度,第二个对象的第一段起始宽度...可能性比较多...

wanhongron 发表于 2022-5-13 11:22:17

guosheyang思路就是我想要的,但是不知道怎么实现

wanhongron 发表于 2022-5-13 11:25:27

@mj0000能帮写个样本吗?

guosheyang 发表于 2022-5-13 13:00:12

试用下
页: [1] 2
查看完整版本: 多段线连接不能统一线宽