[单线变双线,并保留原线]
[单线变双线,并保留原线]实现变道路的中心线为道路双线如何实现下列功能:选中一条直线L(线型为虚线),以此线L为中心,各向两边OFFSET,距离直线L均为a,OFFSET后生成的两条线为实线(CONTINUIOUS),原直线L不变。 (defun c:x2 (/ ss vss dist)
(princ "\n单线变双v.1.1-------by 无痕.2004.2\n选择要变双的曲线:")
(setq ss (ssget '((0 . "*line,arc,ellipse,circle")) )
vss (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
dist (getdist "\n输入偏移距离:"))
(vlax-for obj vss (vla-offset obj dist)(vla-offset obj (- 0 dist)))
) 用VLISP中的OFFSET方法 ;线段双向偏移<BR>;ljc.2004.2<BR>(DEFUN C:OO( / qd zd name2 ss qd1 zd1 CD tc os cdq )<BR> (setq os(getvar "osmode"))<BR> (command "osnap" "off")<BR> (setq cd(getint "请输入偏移距离:"))<BR> (if (= cd nil) (SETQ CD CCD))<BR> (setq ss (ssget '((0 . "LINE")) ) ) <BR> (print "请选择线段:")<BR> (SETQ N (SSLENGTH SS))<BR> (SETQ A (- N 1))<BR> (REPEAT N<BR> (setq name(ssname ss A))<BR> (setq q(entget name))<BR> (setq Zd (cdr(assoc 11 q)) qd (cdr(assoc 10 q)) )<BR> (SETQ ANG (ANGLE QD ZD))<BR> (SETQ qdz (polar qd (+ ANG ( / PI 2)) cd) qdy (polar qd (- ANG ( / PI 2)) cd))<BR> (command "offset" cd name qdz "")<BR> (command "change" (entlast) "" "p" "lt" "CONTINUOUS" "" "")<BR> (command "offset" cd name qdy "")<BR> (command "change" (entlast) "" "p" "lt" "CONTINUOUS" "" "")<BR> (command)<BR> (SETQ A (- A 1))<BR> )<BR> (SETQ CCD CD)<BR> (setvar "osmode" os)<BR> <BR>) 好程序~~画路边线就简单了! 高手能不能把程序扩展一下,让它能使用于其它的线: pline.....
樓上的這個是我目前見到最簡短的. 命令: _appload 已成功加载 x2.lsp。
<BR>命令:<BR>命令:
命令: x2
单线变双v.1.1-------by 无痕.2004.2<BR>选择要变双的曲线:<BR>选择对象: 指定对角点: 找到 6 个
选择对象:<BR>; 错误: no function definition: VLAX-GET-ACAD-OBJECT
<BR>这是什么原因? 谢谢无痕的帮助!! ljcgq发表于2004-2-10 12:45:00static/image/common/back.gif命令: _appload 已成功加载 x2.lsp。命令:命令:命令: x2单线变双v.1.1-------by 无痕.2004.2选择要变双的曲线:选择对象: 指定对角点...先运行(vl-load-com)。改一下过滤,重贴(defun c:x2 (/ ss vss dist) (vl-load-com)
(princ "\n单线变双v.1.1-------by 无痕.2004.2\n选择要变双的曲线:")
(setq ss (ssget '((0 . "Arc,Circle,Ellipse,Line,LwPolyline,Polyline,Spline,XLine")) )
vss (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
dist (getdist "\n输入偏移距离:"))
(vlax-for obj vss (vla-offset obj dist)(vla-offset obj (- 0 dist)))
)