[LISP]晕了,(polar)得出的点坐标怎么和视界的大小还有关系?
先画一5000长的直线,"zoom" "e"后运行程序则文字标注位置如期地距离直线100,但是,acad2004下"zoom" "0.1x"再执行程序,怎么设定的距离无效了?而acad2002更是标注到了起始点,分析问题应该出在(polar)上,其中玄机到底是什么???怎么会和视野范围有关呢???(defun text_ln (str ln / start_pt_ln<BR> ang_ln length_ln mid_pt_ln ang_text<BR> cen_pt_text<BR> )<BR> (setq dist_ln_text 100.0<BR> height_text 200<BR> )<BR> (setq start_pt_ln (vlax-get-property ln "StartPoint")<BR> ang_ln (vlax-get-property ln "angle") <BR> length_ln (vlax-get-property ln "length")<BR> )<BR> (setq start_pt_ln (vlax-safearray->list (vlax-variant-value start_pt_ln))<BR> mid_pt_ln (polar start_pt_ln ang_ln (/ length_ln 2.0))<BR> )<BR> (if (or (> ang_ln (* pi 1.5)) (<= ang_ln (* pi 0.5)))<BR> (setq ang_text (* 180 (/ ang_ln pi))<BR> cen_pt_text (polar mid_pt_ln (+ ang_ln (* pi 0.5)) dist_ln_text)<BR> )<BR> (setq ang_text (* 180 (/ (- ang_ln pi) pi))<BR> cen_pt_text (polar mid_pt_ln (- ang_ln (* pi 0.5)) dist_ln_text)<BR> )<BR> )<BR> (command ".text" "j" "c" cen_pt_text height_text ang_text str "")<BR>)
<BR>(defun c:tt (/ en en_ob str)<BR> (vl-load-com)<BR> (setq ss (ssget))<BR> (setq i 0)<BR> (repeat (sslength ss)<BR> (setq en_i (ssname ss i)<BR> en_ob (vlax-ename->vla-object en_i)<BR> )<BR> (setq str "L3.25 G5.66")<BR> (text_ln str en_ob)<BR> (setq i (1+ i))<BR> )<BR> (princ)<BR>)
估计应该是捕捉点的问题,你把捕捉关掉再试试.. 英雄所见略同,请教同事,一句话“关掉捕捉”,灵!
但是,捕捉只应当影响绘图有关的cad命令,怎么会影响lisp函数呢?
解决方法除了临时关闭捕捉之外,有没有其它途径? 但是,捕捉只应当影响绘图有关的cad命令,怎么会影响lisp函数呢?
你程序里不是用了TEXT命令吗?
应该说没有别的好办法了...关闭捕捉可以在程序里做的,(setvar "osmode" 0),要记得将它原来的值保存起来,最后记得恢复这个值 哦,这样还可以理解,我之前还以为是(polar)受对象捕捉的影响呢。 我也是这样的
页:
[1]