VLA-GET/VLA-PUT 都是ActionX的,你看看VBA里对象的属性及方法,分别替换就行了。
如你要得到圆的圆心
则:

- vla-get-Center 函数
- 功能
- 取得弧、圆、椭圆、视图或视口的中心。
- 语法及参数
- (vla-get-Center Object)
- Object Arc, Circle, Ellipse, PViewport, View, Viewport
- 这个属性适用的对象。
- Center 变体(双精度的三元素数组);读/写
- 3D坐标,代表对象的中点。
- 默认值中点是(0,0,0)。
- 视口、视图:视口与视图对象中点是一个2D坐标值
- 说明
- 弧的中点
-
- 范例
- (defun Example_Center()
- (VL-LOAD-COM)
- (setq AcadObject(vlax-get-acad-object)
- AcadDocument(vla-get-ActiveDocument AcadObject)
- mSpace(vla-get-ModelSpace AcadDocument)
- )
- ;;; 定义圆的中点的与半径
- (setq currCenterPnt(vlax-make-safearray vlax-vbDouble'(0 . 2)))
- (vlax-safearray-fill currCenterPnt '(20 30 0))
- (setq radius 30)
- ;;; 在模型空间中建立一个圆对象
- (setq CircleObj(vla-AddCircle mSpace currCenterPnt radius))
- (vla-ZoomExtents AcadObject)
- (princ "圆的中点是 ")
- (princ (vlax-safearray-get-element currCenterPnt 0))(princ ",")
- (princ (vlax-safearray-get-element currCenterPnt 1))(princ ",")
- (princ (vlax-safearray-get-element currCenterPnt 2))(princ " Center范例 \n")
- (PROMPT "<Enter>进行:")(VL-CMDF pause)
- ;;; 改变圆的中点
- (setq newCenterPnt(vlax-make-safearray vlax-vbDouble'(0 . 2)))
- (vlax-safearray-fill newCenterPnt '(25 25 0))
- (vla-put-Center CircleObj newCenterPnt)
- (vla-Update CircleObj)
- ;;; 查询新的中心位置的结果
- ;;; 注意中点属性输出为一个变体
- (setq centerPnt(vla-get-Center CircleObj))
- (princ "圆的中点是 ")
- (princ (vlax-safearray-get-element currCenterPnt 0))(princ ",")
- (princ (vlax-safearray-get-element currCenterPnt 1))(princ ",")
- (princ (vlax-safearray-get-element currCenterPnt 2))(princ " Center范例 \n")
- (princ)
- )
- 意见?
|