lazybones 发表于 2004-4-14 14:26:00

[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-&gt;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 (&gt; ang_ln (* pi 1.5)) (&lt;= 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-&gt;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>)

meflying 发表于 2004-4-14 15:03:00

估计应该是捕捉点的问题,你把捕捉关掉再试试..

lazybones 发表于 2004-4-14 15:42:00

英雄所见略同,请教同事,一句话“关掉捕捉”,灵!


但是,捕捉只应当影响绘图有关的cad命令,怎么会影响lisp函数呢?


解决方法除了临时关闭捕捉之外,有没有其它途径?

meflying 发表于 2004-4-14 20:05:00

但是,捕捉只应当影响绘图有关的cad命令,怎么会影响lisp函数呢?


你程序里不是用了TEXT命令吗?


应该说没有别的好办法了...关闭捕捉可以在程序里做的,(setvar "osmode" 0),要记得将它原来的值保存起来,最后记得恢复这个值

lazybones 发表于 2004-4-14 22:45:00

哦,这样还可以理解,我之前还以为是(polar)受对象捕捉的影响呢。

邹锋 发表于 2011-10-14 20:59:56

我也是这样的
页: [1]
查看完整版本: [LISP]晕了,(polar)得出的点坐标怎么和视界的大小还有关系?