找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 707|回复: 8

[VBA程序]:标注所有直线的坐标

[复制链接]
发表于 2004-8-17 13:52:17 | 显示全部楼层 |阅读模式

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

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

×
出次的程序 很简单 但是也许会有些用处
自己编的一个小程序 捕捉的是直线的起点 只要首位相连的直线 都能标坐标 可以自定义比例 且返回实体的个数 必须是直线 !!用在道路用地图非常好用 先在cad里选择好直线到vbide里运行就好了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-8-17 14:57:15 | 显示全部楼层
你加密了,怎么到vbide里运行?
先选择再运行?光靠VBA是搞不定的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-17 15:17:23 | 显示全部楼层
密码是780411 是啊 比较郁闷 只能用alt+tab 切换 刚开始学 只知道firstselect这个选择级
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-17 15:47:58 | 显示全部楼层
转自明经通道:
    如果写的程序直接在VBA IDE中点击运行项,PickfirstSelectionSet方法是可行,可以做到先选择后操作。
    但我们不可能运行VBA程序都这样做,最麻烦的一种就是使用工具菜单->宏对话框来执行程序,但这种方法已经不能使用PickfirstSelectionSet方法了,也就是说PickfirstSelectionSet方法得不到所要的选择集。
    通过其它很多方法如:
    直接使用命令-VBARUN UnNameGroup.dvb!AddUnNameGroup也不能用先选择后操作方法;
    直接用(VL-VBARUN "UnNameGroup.dvb!AddUnNameGroup") 执行也不能用先选择后操作方法;
    编个LISP程序来执行该宏也不行。
    关键问题是调用vba命令 _.vbarun,我们跳过vbarun就行了。

    如下:
Private Sub AcadDocument_BeginLisp(ByVal FirstLine As String)
Select Case UCase(FirstLine)
       Case "(C:GADD)"
             AddUnNameGroup
       Case "(C:GDEL)"
            MsgBox "gdel"
            DelUnNameGroup
End Select
End Sub

(defun c:gadd()(princ))  (defun c:gdel()(princ))

command:gadd
    就可以了!
   
    通过以上的描述,如果要使PickfirstSelectionSet方法可用,则必须跳过使用vbarun命令或函数来调用过程,而必须采用事件来自动激发。所以就得在LISP程序中定义一个空的程序,然后通过AcadDocument_BeginLisp事件来调用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-17 15:48:59 | 显示全部楼层
我的办法是:
下列代码在Cad2005及2002中测试通过


Lisp代码



(defun c:aabbcc()
(setvar "cmdecho" 0)
(if (ssget) (command "-vbarun" "aabbcc"))
(setvar "cmdecho" 1)
(princ)
)



VBA代码



Sub aabbcc()
    ' This example lists all the objects in the pickfirst selection set.
    ' Before running this example, create some objects in the active
    ' drawing and select thos   e objects. The objects currently selected
    ' in the active drawing will be returned in the pickfirst selection set.
            
    Dim pfSS As AcadSelectionSet
    Dim ssobject As AcadEntity
    Dim msg As String
    msg = vbCrLfa
   
    Set pfSS = ThisDrawing.ActiveSelectionSet
   
    For Each ssobject In pfSS
        msg = msg & vbCrLf & ssobject.ObjectName
    Next ssobject
    MsgBox "The Pickfirst selection set contains: " & msg
   
End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-9-6 10:50:08 | 显示全部楼层
实际上有更好的解决办法
http://www.xdcad.net/forum/showthread.php?s=&threadid=242988
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 07:25 , Processed in 0.396704 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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