请教关于多段线其中的部分线段整体偏置出的问题
如果是多段线,怎么把多段线其中的部分线段整体偏置出来(根据拾取指定两点,并指示要偏置的部分来实现偏置),如下图所示:怎么用lisp实现多段线其中的部分线段整体偏置出来? liu22737 发表于 2014-4-23 08:41
大师们给你的只是一个思路,仅供参考,
这种小程序我帮你写了一个,
请问程序是否用到了QAFLAGS变量 选择对象:
调用(*push-error-using-command*)前无法从 *error* 调用(command)。
建议将(command)调用转换为(command-s)。 谁有这样的lisp,能否帮帮忙,经常要用,谢谢!!! 没有这样的程序,早些年是有些局部偏移的程序,但都是仅一段,没有过这种两点之间的。
据我所知,这种程序使用纯ALisp还是比较麻烦的,判断一个点是否在多段线上,在哪一段都是很麻烦的,总之不容易。似乎Vlisp要容易一些,不过我不会。
最近好像G版露面也比较少了,如果他出手,应该不成问题。
我早已没精力写程序了,只能提一个思路,如果哪位有兴趣,不妨试试。
思路:选择多段线(点选,在要偏移区间内),设定区间首尾点,提取首尾点之间节段参数,在区间内构成临时多段线,偏移,删除临时多段线。 可以把我发过的点表偏移拿去认真修改下,首先保证偏移不出问题,然后根据你需要偏移出去的点对应取得偏移后的点,把最终得到的点表用PL画出来 感谢llsheng_73ll_j 的热心回复,谢谢!!! 下面我将部分多段线分离出
(defun c:fff (/ CMDECHO1 N OSMODE1 P2 PET SS SS1 SS2)
(defun GetTwoPts (ss / XY)
(setq xy (last (ssnamex ss 0)))
(list (last (cadr xy)) (last (cadddr xy)))
)
(setq CMDECHO1 (getvar "CMDECHO"))
(setq osmode1 (getvar "osmode"))
(setq pet (getvar "PEDITACCEPT"))
(Setvar "CMDECHO" 0)
(Setvar "osmode" 0)
(setvar "PEDITACCEPT" 1)
(if (setq ss (ssget '((0 . "LWPOLYLINE"))))
(progn (setq p2 (GetTwoPts ss))
(repeat (setq n (sslength ss))
(vl-cmdf "_.explode" (ssname ss (setq n (1- n))))
(setq ss1 (ssget "_P"))
(setq ss2 (ssget "W" (car p2) (cadr p2)))
(if (and ss1 ss2)
(progn
(vl-cmdf "_.Select" ss1 "_Remove" ss2 "")
(setq ss1 (ssget "_P"))
)
)
(if ss1
(command "_pedit" "_M" ss1 "" "_j" "" "")
)
(if ss2
(command "_pedit" "_M" ss2 "" "_j" "" "")
)
)
)
)
(Setvar "CMDECHO" CMDECHO1)
(Setvar "osmode" osmode1)
(setvar "PEDITACCEPT" pet)
(princ)
)
稍改就可满足你的要求 自贡黄明儒 发表于 2013-12-28 08:36 static/image/common/back.gif
下面我将部分多段线分离出
稍改就可满足你的要求
黄大师。。。目测你对多线段很有研究啊。。。
请教个问题吧
关于你之前发的关于多线段的子函数我全部都看过了。。
就是没有可以返回多线段的第N段 子函数??
这个功能可能实现吗??
求指教 看看黄大侠成就 自贡黄明儒 发表于 2013-12-28 08:36 static/image/common/back.gif
下面我将部分多段线分离出
稍改就可满足你的要求
长老你好,你的这个程序并不能做到我图中那样哦。 全自动有点麻烦:
页:
[1]
2