如何获取多义线的端点坐标
在纯vlisp环境里,如何获取多义线(LWPOLYLINE)的两端点及各节点坐标呢? (setq sel-one (car (entsel)); 选取对象<BR> spt (vlax-curve-getstartpoint sel-one);对象的起点<BR> ept (vlax-curve-getendpoint a));对象的终点 <FONT face=宋体 size=2>(DEFUN C:XX (/ E1 DXF XY )<BR>(SETQ E1 (CAR (ENTSEL)))<BR>(SETQ E1 (ENTNEXT E1))<BR>(SETQ DXF (ENTGET E1))<BR><BR>(while (= (cdr (assoc 0 dxf)) "VERTEX")<BR>(setq XY (cdr (assoc 10 dxf)))<BR>(COMMAND "POINT" XY)<BR>(SETQ E1 (ENTNEXT E1))<BR>(SETQ DXF (ENTGET E1))<BR>)<BR>)</FONT> vlax-curve-getpointatparamvla-get-coordinate (Lwpolyline Object Property) 我帮楼上的再帖得更全一些吧!
功能取得对象顶点的坐标:
vla-<FONT size=3>get-Coordinate </FONT>
<TABLE id=AutoNumber2 height=26 cellSpacing=1 width=925 align=left border=0>
<TBODY>
<TR>
<TD width=53 height=5>语法
</TD>
<TD width=997 colSpan=2 height=5>(vla-<FONT size=3>get-Coordinate </FONT>Object <FONT size=3>index</FONT>)</TD></TR>
<TR>
<TD width=53 height=1></TD>
<TD width=292 height=1><FONT size=3>Object </FONT></TD>
<TD width=705 height=1><FONT size=3><A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/3DPolyline%20对象.htm" target="_blank" >3DPoly</A>, <A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Leader%20对象.htm" target="_blank" >Leader</A>, <A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/LightweightPolyline%20对象.htm" target="_blank" >LightweightPolyline</A>, <A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Point%20对象.htm" target="_blank" >Point</A>, <BR><A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/PolyfaceMesh%20对象.htm" target="_blank" >PolyfaceMesh</A>, <A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/PolygonMesh%20对象.htm" target="_blank" >PolygonMesh</A>, <A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Polyline%20对象.htm" target="_blank" >Polyline</A>, <A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Solid%20对象.htm" target="_blank" >Solid</A>, <A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Trace%20对象.htm" target="_blank" >Trace</A></FONT></TD></TR>
<TR>
<TD width=53 height=1></TD>
<TD width=292 height=1></TD>
<TD width=705 height=1><FONT size=3>这个属性适用的对象。</FONT></TD></TR>
<TR>
<TD width=53 height=1></TD>
<TD width=292 height=1><FONT size=3>Coordinate</FONT></TD>
<TD width=705 height=1><FONT size=3>变体(双精度的三元素或二元素数组);读/写</FONT></TD></TR>
<TR>
<TD width=53 height=1></TD>
<TD width=292 height=1></TD>
<TD width=705 height=1><FONT size=3>指定的顶点的X、Y与Z坐标值的数组。<BR><A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/LightweightPolyline%20对象.htm" target="_blank" >LightweightPolyline</A>对象:具有两个元素的变体,表示OCS中<BR>的X与Y坐标值。<BR><A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Polyline%20对象.htm" target="_blank" >Polyline</A>对象:具有三个元素的变体,代表OCS的X与Y坐标值。<BR>Z坐标以变体表示但被忽略。<BR>所有其它对象:变体具有三个元素,代表WCS的X与Y坐标,Z坐<BR>标在当前的UCS上将默认为0</FONT></TD></TR>
<TR>
<TD width=53 height=1></TD>
<TD width=292 height=1><FONT size=3>index</FONT></TD>
<TD width=705 height=1><FONT size=3>整数</FONT></TD></TR>
<TR>
<TD width=53 height=1></TD>
<TD width=292 height=1></TD>
<TD width=705 height=1><FONT size=3>顶点数组中要设定或查询的顶点的索引。<BR>顶点数组是以0为基底。</FONT></TD></TR></TBODY></TABLE>
<P class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left" align=left><FONT size=3><BR></FONT><FONT face=华文行楷 size=5><BR><BR><BR></FONT><FONT size=3><BR><BR></FONT>
<P class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left" align=left>
<P class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left" align=left>
<P class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left" align=left>
<P class=MsoNormal style="LINE-HEIGHT: 150%; TEXT-ALIGN: left" align=left><FONT face=华文行楷 size=5>说明 </FONT><FONT size=3><B><BR></B> 这个属性会置换指定对象的任何已有的顶点。可使用标准的数组处理方法来处理这个<BR>属性包含的值。<BR> 3DPoly, Polyline, PolygonMesh:如果是简单多段线(不是样条曲线或曲线拟合),<BR>这个属性指定简单顶点。如果是样条曲线或曲面拟合多段线,这个属性指定顶点的控制点。<BR> <A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Polyline%20对象.htm" target="_blank" >Polyline</A>与<A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/LightweightPolyline%20对象.htm" target="_blank" >LightweightPolyline</A>对象的OCS坐标值可使用<A href="mk:@MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/TranslateCoordinates%20方法.htm" target="_blank" >TranslateCoordinates</A>方法<BR>转换成其它坐标系统,或从其它坐标系统转换为OCS坐标值。<BR><BR></FONT><FONT face=华文行楷 size=5><BR>范例</FONT>
<P class=MsoNormal>(defun Example_Coordinate()
<P class=MsoNormal>;;; <FONT size=3>这个范例在模型空间中建立一条Polyline,接着<BR>;;; 查询与改变第一个索引位置的坐标</FONT>
<P class=MsoNormal> (VL-LOAD-COM)
<P class=MsoNormal> (setq AcadObject(vlax-get-acad-object)
<P class=MsoNormal> AcadDocument(vla-get-ActiveDocument Acadobject)
<P class=MsoNormal> mSpace(vla-get-ModelSpace Acaddocument)
<P class=MsoNormal> )
<P class=MsoNormal>;;; <FONT size=3>定义 2D 多段线的点</FONT>
<P class=MsoNormal> (setq pnts(vlax-make-safearray vlax-vbDouble '(0 . 14)))
<P class=MsoNormal> (vlax-safearray-fill pnts '(10 10 0 10 20 0 20 20 0 30 20 0 40 40 0))
<P class=MsoNormal>;;; <FONT size=3>在模型空间中建立一个轻Polyline对象</FONT>
<P class=MsoNormal> (setq PolylineObj(vla-AddPolyline mSpace pnts))
<P class=MsoNormal> (vla-ZoomExtents AcadObject)
<P class=MsoNormal>;;; <FONT size=3>找出第一个索引位置的坐标</FONT>
<P class=MsoNormal> (setq coord(vla-get-Coordinate PolylineObj 0))
<P class=MsoNormal> (princ (STRCAT "多义线的第一个索引位置的坐标是:" (rtos (vlax-safearray-get-element (vlax-variant-value coord) 0))
<P class=MsoNormal> "," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 1))
<P class=MsoNormal> "," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 2)) "\n"
<P class=MsoNormal> )
<P class=MsoNormal> )
<P class=MsoNormal> (PROMPT "<Enter>进行:")(VL-CMDF pause)
<P class=MsoNormal>;;; <FONT size=3>改变坐标</FONT>
<P class=MsoNormal> (setq temp(+ (vlax-safearray-get-element (vlax-variant-value coord) 0) 1))
<P class=MsoNormal> (setq coord(vlax-variant-value coord))
<P class=MsoNormal> (vlax-safearray-put-element coord 0 temp)
<P class=MsoNormal> (vla-put-Coordinate PolylineObj 0 coord)
<P class=MsoNormal> (vla-Update PolylineObj)
<P class=MsoNormal>;;; <FONT size=3>查询新的坐标</FONT>
<P class=MsoNormal> (setq coord(vla-get-Coordinate PolylineObj 0))
<P class=MsoNormal> (princ (STRCAT "多义线的第一个索引位置的坐标当前是:" (rtos (vlax-safearray-get-element (vlax-variant-value coord) 0))
<P class=MsoNormal> "," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 1))
<P class=MsoNormal> "," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 2))
<P class=MsoNormal> )
<P class=MsoNormal> )
<P class=MsoNormal> (princ)
<P class=MsoNormal>) 今天又学到不少东东 BDYCAD 发表于 2005-5-27 08:21
(setq sel-one (car (entsel)); 选取对象 spt (vlax-curve-getstartpoint sel-one);对象的起点 e ...
试了半天,发现自己少了一个car。 学习了,谢谢楼主
页:
[1]