加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

明经CAD_VBA论坛整理(3)

(2010-04-20 14:20:06)
标签:

杂谈

分类: 开发
18点击菜单项就在该菜单上打对号是怎么实现的?
菜单项标签中可包括叹号和句号 (!.),从而在菜单项前打上复选标记。虽然打标记的项可以被禁用,但标记一个菜单项不会使用户不能选择该项。
在下例中,Line 菜单项被打上标记。
[!.Line]
 DIESEL 来标记标签
菜单项标签中可以包含 DIESEL 字符串表达式,用于判断在每次显示时,是否标记该标签。在下例中,如果与菜单标签相关的系统变量当前可用,则在该标签左边打上复选标记。
[$(if,$(getvar,orthomode),!.)Ortho]^O
[$(if,$(getvar,snapmode),!.)Snap]^B
[$(if,$(getvar,gridmode),!.)Grid]^G

19图层间图形实体的移动?请问各位高手:在AutoCAD VBA中怎样通过程序实现
将一图层中的图形实体移到另一图形的图层上去
文档之间复制对象
CopyObjects方法是一个非常有用的工具。这里我们看看它是怎样在图形间复制对象。首先准备两个文档。在一个文档中,创建一些对象。如果另一个文档的名称不是Drawing1.dwg,可修改以下程序中的文档名称为你的图形名称。最后,确定激活包含有要复制对象的图形并运行以下宏,这样可以将本文档中的对象复制到名称为Drawing1.dwg的另一个文档中。
Dim ss As AcadSelectionSet, doc As AcadDocument
Set doc ThisDrawing.Application.Documents("Drawing1.dwg")
Set ss CreateSelectionSet
ss.SelectOnScreen
ThisDrawing.CopyObjects ssArray(ss), doc.ModelSpace

 
20请问版主,如何实时获得当前光标的X,y,z坐标值,如同状态栏上显示坐标值
我只会在autolisp中用(grread)函数objectarx俺不懂。
21可以设置图块中的块属性值,如内
Public Sub SetAttribute() 
    Dim pickPnt As Variant 
    Dim blkRefObj As AcadBlockReference 
     
    '
选择图元,此段你可以直接将blkRefObj设为你刚插入的块
    ThisDrawing.Utility.GetEntity blkRefObj, pickPnt 

    '
判断该块引用是否含有属性值 
    If Not blkRefObj.HasAttributes Then 
        MsgBox "
你选择的图块没有块属性,程序将退出!
        '
如果不含由属性值退出 
        Exit Sub 
    End If  
    Dim attVars As Variant 
    Dim As Integer  
    '
获取块引用中的块属性对象 
    attVars blkRefObj.GetAttributes 
    '
对块属性对象进行遍历 
    For To UBound(attVars) 
    '
将块属性的值进行修改
    If attVars(I)="mccad" Then 
        attVars(I).TextString "
明经通道
    End If  
    Next 
    ThisDrawing.Regen True   
End Sub

22我的选择集中有Block和PLine,我想能使用该函数
    ThisDrawing.Application.ZoomCenter Center, Magnify 
Center这个点取Block的中心点或者Pline的中心点,但是不知道该怎么取这个值,高手帮帮忙吧!!!
Dim minExt As Variant
    Dim maxExt As Variant     
    If ssetobj.Item(Me.MSHFlexGrid1.Row 1).ObjectName "AcDbBlockReference" Then
            ThisDrawing.Application.ZoomCenter ssetobj.Item(Me.MSHFlexGrid1.Row 1).InsertionPoint, 40
        Else
             ssetobj.Item(Me.MSHFlexGrid1.Row 1).GetBoundingBox minExt, maxExt
             ThisDrawing.Application.ZoomWindow minExt, maxExt
             ThisDrawing.Application.ZoomScaled 0.5, acZoomScaledRelative
    End If

23我的机器里装有cad14和cad2000,用vb写了一个程序调用cad,如何让程序每次都调用cad2000呢?
Set acadApp GetObject(, "AutoCAD.Application.15")
24我只是想判断一下
因为我想画一条多段线,就要用到多个Getpoint,但是我不知道具体要话多少段,只是联系两点的线,我觉得如果可以象autocad里面画线那样就可以了阿
我现在是在画地理图上面的电线,是折线嘛!
然后捕捉错误来退出while
对于取得的点可以通过数组来保存,而数组也可以用redim来重新定义
25SendCommand "_line" 没有返回值,怎么知道是否添加了line
在使用该方法前及后看看数据库中最后一个对象是否相同

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有