插入块而不是圆环
尊敬的各位:,我正在绘制道路布局图。在本图中,我使用一个lisp来获取风管的协调点。
我想根据我的使用情况更改lisp。
在这个lisp中,我想插入一个块对象,而不是甜甜圈。
随函附上此lisp的代码。
提前谢谢。
(DEFUN C:TH ()
(SETQ h (GETDIST " \n Enter HEIGHT OF TEXT : "))
(setqx (* 6 h))
(setqy (* 12 h))
(setqy1 (* 2 h))
(setqz (/ h 2))
(SETQ CRN (GETPOINT "\n Enter Top Left Start corner for table: ")
angle (getangle "\n Pick Rotation Angle :")
ang (* angle 57.32484076)
NO (GETINT " \n Enter start number : ")
PNT (GETPOINT "\n Pick first coordinate: ")
CRN1 (POLAR CRN angle x)
CRN2 (POLAR CRN1 angle y))
(setq p1 (polar crn (+ angle 3.14) h)
p2 (polar crn1 (+ angle 3.14) h)
p3 (polar crn2 (+ angle 3.14) h)
p7 (polar p1 (+ angle 1.57) (* 2 h))
p8 (polar p2 (+ angle 1.57) (* 2 h))
p9 (polar p3 (+ angle 1.57) (* 2 h))
p10 (polar p7 (+ angle 1.57) (* 3 h))
p11 (polar p8 (+ angle 1.57) (* 3 h))
p12 (polar p9 (+ angle 1.57) (* 3 h))
p13 (polar p12 angley )
p14 (polar p9 angley )
Ins1 (polar crn (+ angle 1.57) (* 3 h))
Ins2 (polar crn1 (+ angle 1.57) (* 3 h))
Ins3 (polar crn2 (+ angle 1.57) (* 3 h)))
(command "regenauto" "off")
(WHILE PNT
(SETQ EPNT (RTOS (CAR PNT) 2 3)
NPNT (RTOS (CADR PNT) 2 3)
pnt1 (polar pnt (+ angle 0.7857142857) (* h 0.85))
CRN1 (POLAR CRN angle x)
CRN2 (POLAR CRN1 angle y))
(setq NO1 (RTOS no 2 0))
(SETQ NO2 (STRCAT "P" NO1))
(COMMAND "LAYER" "M" "ID" "C" "C" "" "")
(COMMAND "STYLE" "ITALICT" "ITALICT" H "1" "" "" "" "" )
(COMMAND "TEXT" pnt1 angNO2)
(COMMAND "DONUT" "0" z pnt "")
(COMMAND "TEXT" CRN angNO2)
(COMMAND "TEXT" CRN1 angEPNT)
(COMMAND "TEXT" CRN2 angNPNT)
(SETQ CRN (POLAR CRN (+ angle 4.712389) y1)
CRN1 (POLAR CRN1 (+ angle 4.712389) y1)
CRN2 (POLAR CRN2 (+ angle 4.712389) y1)
NO (1+ NO)
PNT (GETPOINT "\nPick next coordinate, or RETURN if done: "))
)
(setvar "osmode" 0)
(setq p4 (polar crn (+ angle 3.14) h)
p5 (polar crn1 (+ angle 3.14) h)
p6 (polar crn2 (+ angle 3.14) h)
p15 (polar p6 angley ))
(command "line" p10 p4 "")
(command "line" p11 p5 "")
(command "line" p12 p6 "")
(command "line" p4 p15 "")
(command "line" p7 p14 "")
(command "line" p10 p13 "")
(command "line" p13 p15 "")
(setq h1 ( * 1.2 h))
(COMMAND "STYLE" "ITALICT" "ITALICT" H1 "1" "" "" "" "" )
(COMMAND "TEXT" ins1 ang"Point")
(COMMAND "TEXT" ins2 ang"Easting")
(COMMAND "TEXT" ins3 ang"Northing")
)
我已经将你的帖子转移到AutoLISP、Visual LISP和DCL论坛。希望你能在那里得到更多帮助。 您使用了角度函数作为变量,但不建议使用该变量,尽管您没有对其和其他变量进行本地化。
例如。
(SETQ CRN (GETPOINT "\n Enter Top Left Start corner for table: ")
angle (getangle "\n Pick Rotation Angle :")
ang (* angle 57.32484076)
NO (GETINT " \n Enter start number : ")
PNT (GETPOINT "\n Pick first coordinate: ")
CRN1 (POLAR CRN angle x)
CRN2 (POLAR CRN1 angle y))
必须在接下来的例行程序中纠正。。。
对于块的插入,由于您使用的是命令调用,我可以说使用这个。
更换此。
(COMMAND "DONUT" "0" z pnt "")
用这个。
(command "_.-insert" (put here the insertion point ) "" "" "")
最后,请本地化您的变量,以避免任何遗漏行为的例行程序。 以下面的示例为例,填写所需信息,并用它替换甜甜圈行。
(command "_.-insert" <blockname> <insertionpoint> <xscale> <yscale> <rotation>) 也许更好
ang (getangle "\n Pick Rotation Angle :")
ang (* ang 57.32484076)
or just
(setq ang (* 57.32484076 (getangle "\n Pick Rotation Angle :")))
尊敬的各位:,
我尝试了一些建议,上面提到的是作为对我帖子论坛的回复。
但我仍然无法获得输出。
让我试着通过附件pdf解释我的要求。
专家,请参阅附件
RRS1987
参考。pdf
页:
[1]