通信人家园

标题: 通信工程-lisp、vba编程与应用:Autolisp翻译VBA:写文字及选择圆变半径  [查看完整版帖子] [打印本页]

时间:  2018-10-26 15:29
作者: 水吉空     标题: 通信工程-lisp、vba编程与应用:Autolisp翻译VBA:写文字及选择圆变半径

QQ截图20181026151518.jpg
VBA创建单行文字↓↓↓
Public Sub addtext()
Dim pt As Variant
Dim test As String
Dim higt As Double
pt = ThisDrawing.Utility.GetPoint(, "请选择文字插入点:")
test = "lisp翻译vba"
higt = 3
Dim tess As AcadText
Set tess = ThisDrawing.ModelSpace.addtext(test, pt, higt)
End Sub
autolisp翻译VBA创建单行文字↓↓↓
(defun c:tt (/ pt)
(setq pt (getpoint "请选择文字插入点:"))
(Vlax-Invoke-Method (Vlax-Get (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument) 'ModelSpace) 'AddText "lisp翻译vba" (Vlax-3d-Point pt) 3 )
(princ)   
)
相对于之下lisp写文字比vba写文字更加便捷和简单。用autolisp写文字建议不要用command函数,因为每个版本的text命令流会有所不同,容易出现错误。
--------------------------------------------------------------------
选择圆变半径
Public Sub by()
'选择圆半径变为原来的2倍
On Error Resume Next '出现错误接着往下走,但选择为空时
Dim ent As AcadEntity
Dim pt As Variant
ThisDrawing.Utility.GetEntity ent, pt, "请选择对象" '交互选择返回的对象就是定义的那个变量
If ent.ObjectName = "AcDbCircle" Then '判断选择的是不是圆
ent.Radius = ent.Radius * 2
Else
MsgBox ("您选择的不是圆")
End If
End Sub

(defun c:tt ()
        (vl-load-com)
        (defun *error* (msg)
                (alert "您没有选择到东西哦,请重新选择:")
                (princ msg)
                (princ)
        );错误函数没有继续往下走的功能,只有提示错误功能
        (setq ent (Vlax-Ename->Vla-Object (car (entsel "请选择对象"))))
        (if (= (Vlax-Get ent 'ObjectName ) "AcDbCircle")
                (Vlax-Put-Property ent 'Radius (* (Vlax-Get ent 'Radius ) 2) )
                (alert "你选择的不是圆")
        )
        (princ)
)




附件: QQ截图20181026151518.jpg (2018-10-26 15:28, 31.49 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=Mzc2ODQ4fDJjZDQ3N2UwfDE3NTQxNTcwODl8MHww




通信人家园 (https://www.txrjy.com/) Powered by C114