多个偏移
大家好,如图所示,我有中心线和翼线,
现在我想要的是从中心线开始,画出不同距离的翼线
(即10m、25m、45m,可以是任何距离,表示不在适当的间隔上)
和尽头的走廊
有什么Lisp程序可以解决我的问题吗。
提前非常感谢
1111.dwg 另一种解决方案是在定义适当的样式后将其绘制为多行。 试试这段代码。
(defun c:Test (/ *error* d e s k)
(vl-load-com)
;;; Tharwat 09. Oct. 2012 ;;;
(defun *error* (x)
(princ "\n*Cancel*")
)
(if (and (not (tblsearch "LAYER" "SURVEY LIMIT"))
(not (tblsearch "LAYER" "SURVEY LINES"))
)
(progn
(alert " One or two layers are not found in the drawing")
(exit)
)
)
(if (and (setq s (ssget "_+.:S:L" '((0 . "LINE"))))
(progn
(initget "WINGLINES CORRIDOR")
(setq k
(cond ((getkword
"\n Choose one <Winglines> :"
)
)
("Winglines")
)
)
)
)
(while
(setq d (getdist "\n Specify offset distance :"))
(progn
(foreach x (list d (- d))
(vla-offset
(vlax-ename->vla-object (ssname s 0))
x
)
(vla-put-layer
(vlax-ename->vla-object (entlast))
(if (eq k "Winglines")
"SURVEY LIMIT"
"SURVEY LINES"
)
)
)
)
)
)
(princ)
)
天啊。。。。。。Thanx很多tharwat
这真是太棒了。。。。。。。。。。。但仍然需要很少的修正
当我试图绘制道路时,绘制的线必须具有道路线属性(即图层测量限制、蓝色、虚线类型)
但它绘制的道路具有翼线特性(即图层测量线、洋红色、线型conti)
除此之外,它工作得非常好。。。。。这就是我要找的
不客气。
它可以做到这一点,当出现提示时,只需输入Corridor或第一个字母C就足够了。 我试过了。。。
我在提示后输入了C,但仍出现洋红色线
你能告诉我为什么会这样吗?
我修改了这个例程,如下所示
(defun c:Test (/ *error* d e s k)
(vl-load-com)
;;; Tharwat 09. Oct. 2012 ;;;
(defun *error* (x)
(princ "\n*Cancel*")
)
(if (and (not (tblsearch "LAYER" "SURVEY LIMIT"))
(not (tblsearch "LAYER" "SURVEY LINES"))
)
(command "layer" "m" "Survey Limit" "lt" "dashed" "" "c" "5" "" "")
(command "layer" "m" "Survey Lines" "lt" "continuous" "" "c" "6" "" "")
)
(if (and (setq s (ssget "_+.:S:L" '((0 . "LINE"))))
(progn
(initget "WINGLINES CORRIDOR")
(setq k
(cond ((getkword
"\n Choose one <Winglines> :"
)
)
("Winglines")
)
)
)
)
(while
(setq d (getdist "\n Specify offset distance :"))
(progn
(foreach x (list d (- d))
(vla-offset
(vlax-ename->vla-object (ssname s 0))
x
)
(vla-put-layer
(vlax-ename->vla-object (entlast))
(if (eq k "Winglines")
"SURVEY LIMIT"
"SURVEY LINES"
)
)
)
)
)
)
(princ)
)
但同样的错误仍在发生
检查当前图层的颜色控制,它可能会更改为“ByLayer”以外的其他图层。 (defun c:Test (/ *error* d e s k)
(vl-load-com)
;;; Tharwat 09. Oct. 2012 ;;;
(defun *error* (x)
(princ "\n*Cancel*")
)
(setvar 'cmdecho 0)
(defun Lyr (/ x)
(initget "WINGLINES CORRIDOR")
(setq x
(cond ((getkword
"\n Choose one <Winglines> :"
)
)
("Winglines")
)
) x
)
(foreach lyr '(("SURVEY LIMIT" "5" "DASHED")
("SURVEY LINES" "6" "CONTINUOUS"))
(if (not (tblsearch "LAYER" (car lyr)))
(command "_Layer" "_N"
(car lyr)"_Color"
(cadr lyr) (car lyr)
"_Ltype"
(last lyr) (car lyr)
""
)))
(if (and (setq s (ssget "_+.:S:L" '((0 . "LINE"))))
(setq k (lyr))
)
(while
(progn (initget "L")
(setq d (getdist "\n Specify offset distance/L To change layer :")))
(cond
((eq d "L")(setq k (lyr)))
((eq (Type d) 'Real)
(foreach x (list d (- d))
(vla-offset
(vlax-ename->vla-object (ssname s 0))
x
)
(vla-put-layer
(vlax-ename->vla-object (entlast))
(if (eq k "Winglines")
"SURVEY LIMIT"
"SURVEY LINES"
)
)
)
)
)
)
)
(princ)
)
它现在对我来说非常好,没有任何错误
@pBe和Tharwat。。。。。你们真是天才。。。。非常感谢您的关注和帮助。。。。。非常感谢你的工作。
我还需要你的帮助(很抱歉让你再次工作)
在翼线段中,我需要指定距离[相同/不同]的提示
1.在相同的距离下,我想指定一次距离,然后它应该在该距离的适当间隔处绘制线。
(例如,如果我指定了距离2
第一个偏移量为@-2,
第二个偏移量为@-4,
第三个偏移量将为@-6。
就像“偏移”命令一样(在选择对象后,它要求指定通过点或[退出/多次/撤消]:
当我们发出多个命令时,它会以指定距离的适当间隔绘制线)
2、对于不同的距离,它现在应该如何工作。
i、 选择对象
二、。指定距离
三、线路偏移 听起来很有趣。但这是塔尔瓦斯的密码真的
干杯
页:
[1]
2