我帮楼上的再帖得更全一些吧!
功能取得对象顶点的坐标:
vla-get-Coordinate
语法
|
(vla-get-Coordinate Object index) |
|
Object |
MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/3DPolyline%20对象.htm" target="_blank" >3DPoly, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Leader%20对象.htm" target="_blank" >Leader, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/LightweightPolyline%20对象.htm" target="_blank" >LightweightPolyline, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Point%20对象.htm" target="_blank" >Point, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/PolyfaceMesh%20对象.htm" target="_blank" >PolyfaceMesh, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/PolygonMesh%20对象.htm" target="_blank" >PolygonMesh, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Polyline%20对象.htm" target="_blank" >Polyline, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Solid%20对象.htm" target="_blank" >Solid, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Trace%20对象.htm" target="_blank" >Trace |
|
|
这个属性适用的对象。 |
|
Coordinate |
变体(双精度的三元素或二元素数组);读/写 |
|
|
指定的顶点的X、Y与Z坐标值的数组。 MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/LightweightPolyline%20对象.htm" target="_blank" >LightweightPolyline对象:具有两个元素的变体,表示OCS中 的X与Y坐标值。 MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Polyline%20对象.htm" target="_blank" >Polyline对象:具有三个元素的变体,代表OCS的X与Y坐标值。 Z坐标以变体表示但被忽略。 所有其它对象:变体具有三个元素,代表WCS的X与Y坐标,Z坐 标在当前的UCS上将默认为0 |
|
index |
整数 |
|
|
顶点数组中要设定或查询的顶点的索引。 顶点数组是以0为基底。 |
说明 这个属性会置换指定对象的任何已有的顶点。可使用标准的数组处理方法来处理这个 属性包含的值。 3DPoly, Polyline, PolygonMesh:如果是简单多段线(不是样条曲线或曲线拟合), 这个属性指定简单顶点。如果是样条曲线或曲面拟合多段线,这个属性指定顶点的控制点。 MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Polyline%20对象.htm" target="_blank" >Polyline与MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/LightweightPolyline%20对象.htm" target="_blank" >LightweightPolyline对象的OCS坐标值可使用MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/TranslateCoordinates%20方法.htm" target="_blank" >TranslateCoordinates方法 转换成其它坐标系统,或从其它坐标系统转换为OCS坐标值。
范例
(defun Example_Coordinate()
;;; 这个范例在模型空间中建立一条Polyline,接着 ;;; 查询与改变第一个索引位置的坐标
(VL-LOAD-COM)
(setq AcadObject(vlax-get-acad-object)
AcadDocument(vla-get-ActiveDocument Acadobject)
mSpace(vla-get-ModelSpace Acaddocument)
)
;;; 定义 2D 多段线的点
(setq pnts(vlax-make-safearray vlax-vbDouble '(0 . 14)))
(vlax-safearray-fill pnts '(10 10 0 10 20 0 20 20 0 30 20 0 40 40 0))
;;; 在模型空间中建立一个轻Polyline对象
(setq PolylineObj(vla-AddPolyline mSpace pnts))
(vla-ZoomExtents AcadObject)
;;; 找出第一个索引位置的坐标
(setq coord(vla-get-Coordinate PolylineObj 0))
(princ (STRCAT "多义线的第一个索引位置的坐标是:" (rtos (vlax-safearray-get-element (vlax-variant-value coord) 0))
"," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 1))
"," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 2)) "\n"
)
)
(PROMPT "<Enter>进行:")(VL-CMDF pause)
;;; 改变坐标
(setq temp(+ (vlax-safearray-get-element (vlax-variant-value coord) 0) 1))
(setq coord(vlax-variant-value coord))
(vlax-safearray-put-element coord 0 temp)
(vla-put-Coordinate PolylineObj 0 coord)
(vla-Update PolylineObj)
;;; 查询新的坐标
(setq coord(vla-get-Coordinate PolylineObj 0))
(princ (STRCAT "多义线的第一个索引位置的坐标当前是:" (rtos (vlax-safearray-get-element (vlax-variant-value coord) 0))
"," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 1))
"," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 2))
)
)
(princ)
) |