马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 染指_红颜笑 于 2014-8-31 01:26 编辑
[sell]
 - (setq *doc* (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument))(setq *MsDoc* (Vlax-Get *doc* 'ModelSpace))
- ;
- ;---------------------------=={ Vlisp创建对象 }==---------------------------------;
- ;
- ;---------------------------------------------------------------------------------;
- ; 此函数为晓东CAD论坛首发,你可以复制适当传播,但请保留作者信息,转载务必注明出处;
- ;---------------------------------------------------------------------------------;
- ; Author: Abner, Copyright@2014
- ;---------------------------------------------------------------------------------;
- ; Version: 1.0 - 2014.8.31
- ;---------------------------------------------------------------------------------;
- ; ;
- ;---------------------------------------------------------------------------------;
- (defun Xk:Double(lst / point pts)
- (setq pts (vlax-make-safearray vlax-vbDouble (cons 0 (- (length lst) 1))))
- (vlax-safearray-fill pts lst)
- )
- ;---------------------------------------------------------------------------------;
- (defun xk:AddPoint (/ lst1 pt)
- (setq lst1 '())
- (while (setq pt (getpoint "\n请指定点:"))
- (setq lst1 (append lst1 pt))
- )
- )
- (defun xk:if-layer (lay);判断图层是否一致
- (equal lay (Vlax-Get (Vlax-Get *doc* 'ActiveLayer) 'Name))
- )
- ;---------------------------------------------------------------------------------;
- ; 创建多线对象
- (defun Xk:AddMLine (pts Lay / safe AddMLine)
- (setq safe (Xk:Double pts))
- (setq AddMLine (Vlax-Invoke-Method *MsDoc* 'AddMLine safe))
- (if (/= (xk:if-layer AddMLine) t)
- (Vlax-Put-Property AddMLine 'Layer Lay)
- )
- (princ)
- )
- (Xk:AddMLine (xk:AddPoint) "图层1")
- ;---------------------------------------------------------------------------------;
- ; 创建直线对象
- (defun Xk:AddLine (pt1 pt2 Lay / AddLine)
- (setq AddLine (Vlax-Invoke-Method *MsDoc* 'AddLine (vlax-3d-point pt1) (vlax-3d-point pt2)))
- (if (/= (xk:if-layer Lay) t)
- (Vlax-Put-Property AddLine 'Layer Lay)
- )
- (princ)
- )
- (Xk:AddLine (getpoint) (getpoint) "图层1")
- ;---------------------------------------------------------------------------------;
- ; 创建多段线对象
- (defun Xk:AddPolyline (pts Lay / safe AddPolyline)
- (setq safe (Xk:Double pts))
- (setq AddPolyline (Vlax-Invoke-Method *MsDoc* 'AddPolyline safe))
- (if (/= (xk:if-layer AddPolyline) t)
- (Vlax-Put-Property AddPolyline 'Layer Lay)
- )
- (princ)
- )
- (Xk:AddPolyline (xk:AddPoint) "图层1")
- ;---------------------------------------------------------------------------------;; 创建单行文字
- (defun Xk:AddText (pt txt width lay / AddText var)
- (setq var (vlax-3d-point pt))
- (setq AddText (Vlax-Invoke-Method *MsDoc* 'AddText txt var width))
- (if (/= (xk:if-layer AddText) t)
- (Vlax-Put-Property AddText 'Layer Lay)
- )
- (princ)
- )
- (Xk:AddText (getpoint "\n指定文字插入点:") (getstring "\n输入文字:") 7 "图层1")
- ;---------------------------------------------------------------------------------;、
- ; 创建多行文字
- (defun Xk:AddMText (pt width txt lay / AddMText var)
- (setq var (vlax-3d-point pt))
- (setq AddMText (Vlax-Invoke-Method *MsDoc* 'AddMText var width txt))
- (if (/= (xk:if-layer AddMText) t)
- (Vlax-Put-Property AddMText 'Layer Lay)
- )
- (princ)
- )
- (Xk:AddMText (getpoint "\n指定文字插入点:") 0 (getstring "\n输入文字:") "图层1")
- ;---------------------------------------------------------------------------------;
[/sell]
|