02180404 发表于 2005-8-16 19:04:00

陈老师的工程图比例补丁不能用了?

在AIP10中,使用陈老师的VBA,却发现只有质量属性可用,比例不能用了

sixsixsix 发表于 2005-8-16 19:41:00

<P>不可能,VBA与AIP的版本无关。</P>
<P>在VBA编辑器中查看源代码吧。</P>

02180404 发表于 2005-8-16 21:45:00

<P>666,我查看源代码,的确没有工程图部分啊,可陈老师的书里明明是说有的.陈老师能解释一下吗?有就是有,没有就是没有,您只要说明一下,就可能不用我们浪费时间去研究为什么了.</P>
<P>下面是源代码,确实没有比例部份的:</P>
<P>Private Sub CommandButton11_Click()</P>
<P>End Sub</P>
<P>Private Sub CommandButton13_Click()</P>
<P>End Sub</P>
<P>Private Sub UserForm_Initialize() '用户窗体初始化</P>
<P>End Sub<BR>Private Sub CommandButton1_Click()<BR>&nbsp;&nbsp;&nbsp; '为文件添加质量属性,之后再在工程图中引用,弥补R6/7的缺陷...</P>
<P>&nbsp;&nbsp;&nbsp; Dim oCompDef As ComponentDefinition<BR>&nbsp;&nbsp;&nbsp; Dim oInventor As Application<BR>&nbsp;&nbsp;&nbsp; Set oInventor = ThisApplication</P>
<P>&nbsp;&nbsp;&nbsp; If oInventor.Documents.Count = 0 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "必须打开一个文件才能用。程序将退出了..."<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Sub<BR>&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' 根据图档的不同,设置质量属性名.<BR>&nbsp;&nbsp;&nbsp; Dim oDoc As Document<BR>&nbsp;&nbsp;&nbsp; Dim masstr As String<BR>&nbsp;&nbsp;&nbsp; Set oDoc = oInventor.ActiveDocument<BR>&nbsp;&nbsp;&nbsp; If oDoc.DocumentType = kAssemblyDocumentObject Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; masstr = "AllM"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; masstr = "SingleM"<BR>&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' 设置构造对象<BR>&nbsp;&nbsp;&nbsp; Set oCompDef = oDoc.ComponentDefinition<BR>&nbsp;&nbsp;&nbsp; Dim oMassProps As MassProperties<BR>&nbsp;&nbsp;&nbsp; Set oMassProps = oCompDef.MassProperties<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' 取出质量属性当前值.<BR>&nbsp;&nbsp;&nbsp; Dim mass, oldmass As String<BR>&nbsp;&nbsp;&nbsp; mass = oMassProps.mass<BR>&nbsp;&nbsp;&nbsp; If mass = 0 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "没有体积,也没有质量可算。程序将退出了..."<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Sub<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mass = Format(mass, "0.000")<BR>&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Dim oPropset As PropertySet<BR>&nbsp;&nbsp;&nbsp; Dim oProp As Property<BR>&nbsp;&nbsp;&nbsp; Dim oNewPro As PropertySet<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' 测试是否已存在相关属性(试获取)<BR>&nbsp;&nbsp;&nbsp; On Error Resume Next<BR>&nbsp;&nbsp;&nbsp; Set oNewPro = oDoc.PropertySets.Item(4)<BR>&nbsp;&nbsp;&nbsp; Set oMassPro = oNewPro.Item(masstr)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Err Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' 不存在-添加新属性<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set oProp = oDoc.PropertySets.Item(4).Add(mass, masstr)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "自定义属性" &amp; masstr &amp; "=" &amp; mass &amp; "kg 已经创建,可以在工程图中引用了。"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' 存在-修改老属性<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oldmass = oMassPro.Value<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If oldmass = mass Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "质量属性不需要更新..."<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oMassPro.Value = mass<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox masstr &amp; "属性已经更新为" &amp; mass &amp; "kg"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; End If<BR>End Sub</P>
<P>Private Sub CommandButton2_Click()<BR>&nbsp;&nbsp;&nbsp;&nbsp; Unload Me<BR>End Sub</P>
<P>Private Sub CommandButton3_Click()<BR>&nbsp;&nbsp;&nbsp; ' 绘制标准渐开线齿轮的齿沟草图<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; If Not TypeOf ThisApplication.ActiveEditObject Is PlanarSketch Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "必须在草图状态下使用这个宏..."<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Sub<BR>&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; '加载激活并显示窗体<BR>&nbsp;&nbsp;&nbsp; Load UserForm1<BR>&nbsp;&nbsp;&nbsp; Call UserForm1.Show<BR>End Sub</P>
<P>Private Sub CommandButton4_Click()<BR>&nbsp;&nbsp;&nbsp; MsgBox "计算现有模型的质量属性,根据当前的条件,有不同的对策。" &amp; Chr(10) &amp; _<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "结果在文件的属性中添加或修改一个自定义的数据: " &amp; Chr(10) &amp; _<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "零件文件是SingleM,装配文件是AllM" &amp; Chr(10) &amp; _<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "这个结果数据可以在工程图中引用,完成标题栏相关数据的填充。"<BR>End Sub</P>
<P>Private Sub CommandButton5_Click()<BR>&nbsp;&nbsp;&nbsp; MsgBox "根据界面中的用户输入,创建标准渐开线齿轮的齿沟草图," &amp; Chr(10) &amp; _<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "供创建齿轮模型之用..."<BR>End Sub</P>
<P>Private Sub CommandButton6_Click()<BR>&nbsp;&nbsp;&nbsp; MsgBox "基于表达弹簧数据的草图,创建弹簧实体。" &amp; Chr(10) &amp; _<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "可扩展Inventor的弹簧创建能力..."<BR>End Sub</P>
<P>Private Sub CommandButton7_Click()<BR>&nbsp;&nbsp;&nbsp; ' 用放样特征,基于草图创建更复杂的弹簧<BR>&nbsp;&nbsp;&nbsp; Dim vbaFn As String<BR>&nbsp;&nbsp;&nbsp; Dim oInvApp As Application<BR>&nbsp;&nbsp;&nbsp; Set oInvApp = ThisApplication<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' 取出 VBA projects<BR>&nbsp;&nbsp;&nbsp; Dim oInvVBAProjects As InventorVBAProjects<BR>&nbsp;&nbsp;&nbsp; Set oInvVBAProjects = oInvApp.VBAProjects<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' 判断是否已经加载<BR>&nbsp;&nbsp;&nbsp; Dim itemN, projN As Integer<BR>&nbsp;&nbsp;&nbsp; projN = -1<BR>&nbsp;&nbsp;&nbsp; For itemN = 1 To oInvVBAProjects.Count<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If oInvVBAProjects.Item(itemN).Name = "Spring" Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; loadKey = True: projN = itemN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; Next itemN<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' 按需要加载<BR>&nbsp;&nbsp;&nbsp; If projN &lt; 0 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' 打开指定的 VBA project<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call oInvVBAProjects.Open("C:\Program Files\Autodesk\Inventor 7\Bin\Macros\spring.ivb")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; projN = oInvVBAProjects.Count<BR>&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' 取出被打开的工程<BR>&nbsp;&nbsp;&nbsp; Dim oInvVBAProject As InventorVBAProject<BR>&nbsp;&nbsp;&nbsp; Set oInvVBAProject = oInvVBAProjects.Item(projN)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' 访问其中的模块<BR>&nbsp;&nbsp;&nbsp; Dim oInvVBAModules As InventorVBAComponents<BR>&nbsp;&nbsp;&nbsp; Set oInvVBAModules = oInvVBAProject.InventorVBAComponents<BR>&nbsp;&nbsp;&nbsp; Dim oInvVBAModule As InventorVBAComponent<BR>&nbsp;&nbsp;&nbsp; For Each oInvVBAModule In oInvVBAModules<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' 查找模块名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If oInvVBAModule.Name = "SpringCreation" Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' 定位模块位置<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim oInvVBAMacros As InventorVBAMembers<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set oInvVBAMacros = oInvVBAModule.InventorVBAMembers<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim oInvVBAMacro As InventorVBAMember<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Each oInvVBAMacro In oInvVBAMacros<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' 查找宏名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If oInvVBAMacro.Name = "CreateASpringUsingLofting_V2_2" Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' 运行宏<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oInvVBAMacro.Execute<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; Next<BR>End Sub</P>
<P>Private Sub CommandButton8_Click()<BR>&nbsp;&nbsp;&nbsp; '加载激活并显示窗体<BR>&nbsp;&nbsp;&nbsp; Load UserForm2<BR>&nbsp;&nbsp;&nbsp; Call UserForm2.Show<BR>End Sub</P>
<P>Private Sub CommandButton9_Click()<BR>&nbsp;&nbsp;&nbsp; MsgBox "为了弥补Inventor不懂度分秒的角度表达而作..."<BR>End Sub</P>
<P>Private Sub Image1_Click()<BR>&nbsp;&nbsp;&nbsp; MsgBox "张朝阳 &amp; 陈伯雄 2003-6"<BR>End Sub<BR></P>

sixsixsix 发表于 2005-8-16 22:45:00

02180404 发表于 2005-8-17 07:27:00

<P>666,你看我的,就是比你少了比例部份,真是奇怪,是哪儿出错了吗?可我这个文件是从陈老师的随书光盘中复制过来的啊,而且在书中他也说了可以处理的.可事实就是,我按照他的操作要求做后,还是没有这部份,莫非我和你的不是同一个文件?</P>
<P>下边是我搜索他的光盘中的所有.ivb文件,应该是第一和第二个文件吧:</P>

ccggnn 发表于 2005-8-17 10:22:00

这个东西我还没有,可不可以共用一下?

02180404 发表于 2005-8-17 21:05:00

666,能否告诉我,我们用的不是同一个文件吗?

sixsixsix 发表于 2005-8-17 21:17:00

从截图看,或许吧。陈老师应当清楚。

02180404 发表于 2005-8-17 22:17:00

<P>问题是我是从陈老师的书里的光盘上复制出来的,而且陈老师在书中也详细说明了解决方法,按理,应该不会出现这种问题吧.......</P>
<P>陈老师可能不想回答,不过您的文件能否告诉我是从什么地方来的吗?</P>

sixsixsix 发表于 2005-8-18 17:31:00

<P>时日已久,难以记清,可能就是在本论坛中。</P>
<P>您还是恳请陈老师再提供一次正版上传,会解决的。</P>
页: [1] 2
查看完整版本: 陈老师的工程图比例补丁不能用了?