mj520plus 发表于 2010-10-14 13:09:00

[求助]快速定义坐标原点的程序

<p><font face="楷体_GB2312" color="#ff0000" size="5">下面图片中的图形为多义线,现求一个程序,通过选择直线1和直线2,坐标原点自动定位到直线1和直线2的交点上。</font></p>
<p><font face="楷体_GB2312" color="#ff0000" size="5">请高手帮忙!谢谢!!</font></p>

Gu_xl 发表于 2010-10-14 14:22:00

本帖最后由 作者 于 2010-10-14 16:41:24 编辑 <br /><br /> <p><font face="Verdana">(defun c:tt()<br/>&nbsp; (command "ucs" "w" )<br/>&nbsp; (princ "\n选择第一边:")<br/>&nbsp; (setq e1 (entsel))<br/>&nbsp; (setq en1 (car e1)<br/>&nbsp;p01 (cadr e1)<br/>&nbsp;)<br/>&nbsp; (setq pt1 (vlax-curve-getClosestPointTo en1 p01)</font></p>
<p><font face="Verdana">&nbsp;param (vlax-curve-getParamAtPoint en1 pt1)<br/>&nbsp;pt2 (vlax-curve-getPointAtParam en1 (fix param))</font></p>
<p><font face="Verdana">&nbsp;)<br/>&nbsp; <br/>&nbsp;&nbsp;&nbsp; (princ "\n选择第二边:")<br/>&nbsp; (setq e2 (entsel))<br/>&nbsp; (setq en2 (car e2)<br/>&nbsp;p02 (cadr e2)<br/>&nbsp;)<br/>&nbsp; (setq pt3 (vlax-curve-getClosestPointTo en2 p02)<br/>&nbsp;param1 (vlax-curve-getParamAtPoint en2 pt3)<br/>&nbsp;<font color="#ff0000">pt4 (vlax-curve-getPointAtParam en2 (fix param1))</font></font></p>
<p><font face="Verdana">&nbsp;)<br/>&nbsp; <br/>&nbsp;(setq pt5 (inters pt1 pt2 pt3 pt4 nil))<br/>&nbsp; (command "ucs" "n" pt5)<br/>&nbsp; )</font></p>

mj520plus 发表于 2010-10-14 16:30:00

<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana" size="5">选择多义线的两个直线边后,报错:</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana" size="5"></font>&nbsp;</p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana" color="#ff0000" size="5">ERROR: 参数类型错误: 二维/三维点: nil</font></p>
<p><font color="#ff0000" size="5"></font>&nbsp;</p>
<p><font color="#ff0000" size="5">期待高手解答!!!</font></p>

Gu_xl 发表于 2010-10-14 16:43:00

mj520plus发表于2010-10-14 16:30:00static/image/common/back.gif选择多义线的两个直线边后,报错:
&nbsp;
ERROR: 参数类型错误: 二维/三维点: nil
&nbsp;
期待高手解答!!!


<p>红色区代码有误!楼上已修正!</p>

mj520plus 发表于 2010-10-14 17:45:00

<p><font color="#ff00ff" size="5"><strong>谢谢!果然是高手!</strong></font></p>
<p><font size="5"></font>&nbsp;</p>
<p><font size="5">现在我又遇到新的问题,上面的图形不是多义线的情况,<font style="BACKGROUND-COLOR: #ffffff" face="Verdana" size="5">选择多义线的两个直线边后</font>会出现如下错误:</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana" color="#ff0000" size="5">命令: nil</font></p>
<p><font size="5"></font>&nbsp;</p>
<p><font color="#ff00ff" size="5">不知高手可有什么办法?即就是不管是炸开与否,都可以定义坐标原点!!!</font></p>
<p><font size="5"></font>&nbsp;</p>
<p><font size="5">期待答案!!!</font></p>

Gu_xl 发表于 2010-10-14 18:17:00

<p>不是多义线也可以啊!但要保证两条直线是在一个平面上,若高程不同可不行!</p>

mj520plus 发表于 2010-10-14 18:39:00

<p><font face="楷体_GB2312" color="#ff00ff" size="5">刚刚又试用了一下,可以正常使用了!</font></p>
<p><font face="楷体_GB2312" color="#ff00ff" size="5"></font>&nbsp;</p>
<p><font face="楷体_GB2312" color="#ff00ff" size="5">谢谢!以后还请多指点!</font></p>

ZZXXQQ 发表于 2010-10-14 20:57:00



;选择两线定坐标原点 明经 ZZXXQQ 2010.10.14
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (and (setq s1 (entsel "\n选择一条线 :"))
(setq pt2 (osnap (cadr s1) "NEAR"))
(setq s2 (entsel "\n选择第二条线 :"))
(setq pt4 (osnap (cadr s2) "NEAR"))) (progn
(setq pt1 (polar pt2 (+ (/ pi 2) (angle pt2 (cadr s1))) 10)
      pt3 (polar pt4 (+ (/ pi 2) (angle pt4 (cadr s2))) 10)
      po (inters pt1 pt2 pt3 pt4 nil))
(command ".UCS" "_O" po)
))
(setvar "CMDECHO" 1)
(princ)
)

lincctw_ccl 发表于 2010-10-18 09:28:00

我也常須用到這個功能<div>上面程序2002沒法用</div><div>請問有2002版可用的版本嗎?</div><div>謝謝!!</div>

ZZXXQQ 发表于 2010-10-18 22:10:00

lincctw_ccl发表于2010-10-18 9:28:00static/image/common/back.gif我也常須用到這個功能
上面程序2002
页: [1] 2
查看完整版本: [求助]快速定义坐标原点的程序