找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1960|回复: 7

原创:Vlisp创建图元(慢慢更新)积少成多(2014.8.31更新)

[复制链接]
发表于 2014-8-28 23:24:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 染指_红颜笑 于 2014-8-31 01:26 编辑

[sell]
  1. (setq *doc* (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument))(setq *MsDoc* (Vlax-Get *doc* 'ModelSpace))
  2. ;
  3. ;---------------------------=={ Vlisp创建对象 }==---------------------------------;
  4. ;
  5. ;---------------------------------------------------------------------------------;
  6. ;  此函数为晓东CAD论坛首发,你可以复制适当传播,但请保留作者信息,转载务必注明出处;
  7. ;---------------------------------------------------------------------------------;
  8. ;  Author: Abner, Copyright@2014                                                        
  9. ;---------------------------------------------------------------------------------;
  10. ;  Version:  1.0    -    2014.8.31                                                         
  11. ;---------------------------------------------------------------------------------;
  12. ;                                                                                 ;
  13. ;---------------------------------------------------------------------------------;
  14. (defun Xk:Double(lst / point pts)
  15.     (setq pts (vlax-make-safearray vlax-vbDouble (cons 0 (- (length lst) 1))))
  16.         (vlax-safearray-fill pts lst)
  17. )

  18. ;---------------------------------------------------------------------------------;
  19. (defun xk:AddPoint (/ lst1 pt)
  20.         (setq lst1 '())
  21.         (while (setq pt (getpoint "\n请指定点:"))
  22.                 (setq lst1 (append lst1 pt))
  23.         )
  24. )

  25. (defun xk:if-layer (lay);判断图层是否一致
  26.         (equal lay (Vlax-Get (Vlax-Get *doc* 'ActiveLayer) 'Name))
  27. )

  28. ;---------------------------------------------------------------------------------;
  29. ;  创建多线对象
  30. (defun Xk:AddMLine (pts Lay /  safe AddMLine)
  31.         (setq safe (Xk:Double pts))
  32.         (setq AddMLine (Vlax-Invoke-Method  *MsDoc* 'AddMLine safe))
  33.         (if (/= (xk:if-layer AddMLine) t)
  34.                 (Vlax-Put-Property AddMLine 'Layer Lay)
  35.         )
  36.         (princ)
  37. )
  38. (Xk:AddMLine (xk:AddPoint) "图层1")
  39. ;---------------------------------------------------------------------------------;
  40. ;  创建直线对象
  41. (defun Xk:AddLine (pt1 pt2 Lay / AddLine)
  42.         (setq AddLine (Vlax-Invoke-Method  *MsDoc* 'AddLine (vlax-3d-point pt1) (vlax-3d-point pt2)))
  43.         (if (/= (xk:if-layer Lay) t)
  44.                 (Vlax-Put-Property AddLine 'Layer Lay)
  45.         )
  46.         (princ)
  47. )

  48. (Xk:AddLine (getpoint) (getpoint) "图层1")
  49. ;---------------------------------------------------------------------------------;
  50. ;  创建多段线对象
  51. (defun Xk:AddPolyline (pts Lay / safe AddPolyline)
  52.         (setq safe (Xk:Double pts))
  53.         (setq AddPolyline (Vlax-Invoke-Method *MsDoc* 'AddPolyline safe))
  54.         (if (/= (xk:if-layer AddPolyline) t)
  55.                 (Vlax-Put-Property AddPolyline 'Layer Lay)
  56.         )
  57.         (princ)
  58. )

  59. (Xk:AddPolyline (xk:AddPoint) "图层1")
  60. ;---------------------------------------------------------------------------------;;  创建单行文字
  61. (defun Xk:AddText (pt txt width lay / AddText var)
  62.         (setq var (vlax-3d-point pt))
  63.         (setq AddText (Vlax-Invoke-Method *MsDoc* 'AddText txt var width))
  64.         (if (/= (xk:if-layer AddText) t)
  65.                 (Vlax-Put-Property AddText 'Layer Lay)
  66.         )
  67.         (princ)
  68. )

  69. (Xk:AddText (getpoint "\n指定文字插入点:") (getstring "\n输入文字:") 7 "图层1")
  70. ;---------------------------------------------------------------------------------;、
  71. ;  创建多行文字
  72. (defun Xk:AddMText (pt width txt lay / AddMText var)
  73.         (setq var (vlax-3d-point pt))
  74.         (setq AddMText (Vlax-Invoke-Method *MsDoc* 'AddMText var width txt))
  75.         (if (/= (xk:if-layer AddMText) t)
  76.                 (Vlax-Put-Property AddMText 'Layer Lay)
  77.         )
  78.         (princ)
  79. )

  80. (Xk:AddMText (getpoint "\n指定文字插入点:") 0 (getstring "\n输入文字:") "图层1")
  81. ;---------------------------------------------------------------------------------;

[/sell]


评分

参与人数 1D豆 +10 收起 理由
XDSoft + 10 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2014-8-30 19:04:03 | 显示全部楼层
只有这么几个...{:soso_e120:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 0 反对 1

使用道具 举报

已领礼包: 5586个

财富等级: 富甲天下

发表于 2014-8-29 07:59:26 | 显示全部楼层
“10D豆”不多,性质可不一样。已有高手做得很全了的。

点评

“很全”,在哪里?  详情 回复 发表于 2014-8-29 08:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 08:35:55 | 显示全部楼层
HLCAD 发表于 2014-8-29 07:59
“10D豆”不多,性质可不一样。已有高手做得很全了的。

“很全”,在哪里?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-9-5 14:22:15 | 显示全部楼层
狠心花了10块,却看不懂,赶紧加油学习啦!!!

点评

这是用VBA的方法创建对象,比组码更方便,直观,等空下来我在继续完善。  详情 回复 发表于 2014-9-6 09:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-6 09:20:08 | 显示全部楼层
芦苇芦苇 发表于 2014-9-5 14:22
狠心花了10块,却看不懂,赶紧加油学习啦!!!

这是用VBA的方法创建对象,比组码更方便,直观,等空下来我在继续完善。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-2-3 09:36:40 | 显示全部楼层
:@后来才知:@
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2018-10-5 09:20:14 | 显示全部楼层
又是要100才能看  哎
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-26 18:38 , Processed in 0.196171 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表