SolidWorks二次开发-修改对象的图层

	好久没有写博文了,因为不知道要写些什么了。基础的操作都写的差不多了,正好前一段时间有粉丝咨询了一个问题,是关于如何修改RevisionTable的图层。目标是想把这个表格放到一个红色的图层里面,这样比较醒目。

在这里插入图片描述
今天我们把这个当作客户的需求来进行分析,当一个例子来剖析一下SolidWorks二次开发的一些步骤,遇到坑之后应该怎么应对。

  • 这个Revision Table是已经存在的表?还是代码插入的。 这就需要考虑到表格对象的获取问题。
  • 图层是已经存在的,还是需要重新建立的。

接下来,就是进行研究测试阶段,看看怎么样快速找到达到效果的办法。
1.录制宏,把手动修改的图层的动作做一次,看Solidworks的宏录制器是否能够记录到。
如下图,操作时只需要先选中表格,在左侧把图层改掉。这样表格就变成了红色。

在这里插入图片描述
停止录制,发现代码只有这么几句,没有发现有效的信息。

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("DetailItem188@Sheet1", "REVISIONTABLE", 3.55132394288651E-02, 0.2577670483868, 0, False, 0, Nothing, 0)
End Sub

上面这里录制的是已经存在表格的情况,我考虑没有这个表的情况下插入试试,经过测试,发现如果我们把Solidworks的工程图当前 图层改为Red,此时再插入表格时,就会自动在这个图层了。
但是我们把录制的插入表格的宏再次运行时,表格居然还是黑色的。没有被 放到Red图层里。
在这里插入图片描述
在这里插入图片描述
这样子的话,说明这个插入的api是有问题的,可能是bug. 那就只能另想办法了
2.查Api
通过个地方可以看到,有不少接口是有Layer这个属性的,但是没有任务Table相关的对象。
在这里插入图片描述
我们再查一下与revision table相关的信息,发现了RevisionTableAnnotation 说明它可能和Annotation有关。
在这里插入图片描述
然后我们看到一个关键信息。
在这里插入图片描述
这样就大概理清楚了,直接先在VBA里面进行测试执行。

RevisionTableAnnotation->TableAnnotation->(Annotation)GetAnnotation->Layer
...

Set myRevisionTable = currentSheet.InsertRevisionTable2(True, 0#, 0#, swBOMConfigurationAnchor_TopLeft, "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\English\standard revision block.sldrevtbt", swRevisionTable_CircleSymbol, True)

Dim ann As TableAnnotation

Set ann = myRevisionTable

Dim ann2 As Annotation

Set ann2 = ann.GetAnnotation

ann2.Layer = "Layer1"

测试没有问题,再转换到其它语言中。
增加到我们的法宝上:在这里插入图片描述

   //这里需要自己打开一个工程图。 并存在名称为Red的图层 (代码新建在之前的章节里有写)

            var swApp = PStandAlone.GetSolidWorks();
            var swModelDoc = (ModelDoc2)swApp.ActiveDoc;

            DrawingDoc drawingDoc = (DrawingDoc)swModelDoc;
            Sheet drwSheet = (Sheet)drawingDoc.GetCurrentSheet();

            var myRevisionTable = drwSheet.InsertRevisionTable2(true, 0, 0, (int)swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_TopLeft, @"C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\English\standard revision block.sldrevtbt", (int)swRevisionTableSymbolShape_e.swRevisionTable_CircleSymbol, true);

            var tableAnn = (TableAnnotation)myRevisionTable;

            var Ann = tableAnn.GetAnnotation();

            Ann.Layer = "Red";

看看结果 :
虽然 位置不太合理,但效果是对的。
在这里插入图片描述

这个案例就这么多,里面有些很具体的思路逻辑需要大家自己感悟。经验性的东西没法一次性讲清楚,就记的住。
正常我能记住的项目周期基本上不会超过半个月,过了半个月就和新项目区别不大了
所以只能学会方法,才能更快的工作。

关注我,下一篇更精彩。在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Paine Zeng

如果对有帮助,请我喝咖啡吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值