2点高度
你好我需要在路面上增加很多点高度,我想使用lisp。
需要在路缘线下添加2个点值。
第一个(11.11 ex.)位于路缘石下方,第二个(22.22 ex.)位于路缘石下方。
我构建了一个具有2个提示值的块:
街道。图纸
高度_1=11.11
高度2:22.22
此lisp应适用于:
1: 拾取插入点。
2: 拾取第一个值(Height_1)
3: 选取第二个值(Height_2)
通常我使用follow-lisp,但它一次只能添加一个值。
(defun c:CRC (/ sp p)
;; Tharwat 15.Feb.2016 ;;
(setq sp
(vlax-get (vla-get-activelayout
(vla-get-ActiveDocument (vlax-get-acad-object)))
'Block)
)
(if (tblsearch "BLOCK" "STREET" )
(while (setq p (getpoint "\nSpecify point :"))
(vla-put-textstring
(car (vlax-invoke
(vla-insertblock
sp
(vlax-3d-point p)
"STREET"
1.0
1.0
1.0
0.0)
'getattributes))
(rtos (/ (caddr p) 1000.) 2 2)
)
)
)
(princ)
)(vl-load-com)
提前感谢 我会使用:
(setvar "ATTDIA" 0 )
(setvar "ATTREQ" 1 )
(command "-insert" "STREET" p "1" "1" "0")
由于插入块时ATTREQ变量,itll会询问属性。 谢谢,很遗憾我不知道Lisp代码。你能建议我如何修改lisp吗?
谢谢 你好
您是否在选取两个点后,将其按顺序写入属性块“STREET”? 是的,我想这样做。
(defun c:CRC (/ sp p)
(if (tblsearch "BLOCK" "STREET" )
(progn
(setq p (getpoint "\nSpecify point :"))
(setvar "ATTDIA" 0 )
(setvar "ATTREQ" 1 )
(command "-insert" "STREET" p "1" "1" "0")
)
)
(princ)
)
(vl-load-com) 嗨@Aftertouch,
这很好,但我需要手动添加值。我想选取2个点,得到z值,并用它填充属性值
谢谢
(defun c:crc (/ sp p p1 p2 ats)
;; Tharwat 10.Mar.2017 ;;
(setq sp
(vlax-get (vla-get-activelayout
(vla-get-activedocument (vlax-get-acad-object))
)
'block
)
)
(if (tblsearch "BLOCK" "STREET")
(while (and (setq p (getpoint "\nSpecify insertion point :"))
(setq p1 (getpoint "\nSpecify 1st point :"))
(setq p2 (getpoint "\nSpecify 2nd point :"))
)
(setq ats (vlax-invoke
(vla-insertblock
sp
(vlax-3d-point p)
"STREET"
1.0
1.0
1.0
0.0
)
'getattributes
)
)
(mapcar
'(lambda (at)
(vla-put-textstring
at
(rtos (/ (caddr (if (= (vla-get-tagstring at) "Height_1")
p1
p2
)
)
1000.
)
2
2
)
)
)
ats
)
)
)
(princ)
)(vl-load-com)
对不起,我误解了这个问题 Tharwat,谢谢你。
我尝试了lisp,但在两个不同的点上得到了相同的高度值,z值不同。
页:
[1]
2