乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 86|回复: 4

[编程交流] dim text o的匹配比例

[复制链接]

34

主题

105

帖子

91

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
224
发表于 2022-7-6 17:24:56 | 显示全部楼层 |阅读模式
你好
 
我希望有人能帮助我。
 
我有下面的代码
 
基本上,它存储dim text overide值,并填充下一个选定dim的值。
 
然而,我希望能把它浓缩一点。而不是选择暗显,输入,选择下一个暗显,输入我希望选择暗显,选择下一个暗显,然后输入?
 
所以我必须改变选择集,只允许一个选择,然后进入下一位代码,这可能吗??
 
 
  1. Public MyDmTxtOvrdeStr As String
  2. Sub MatchDimTextOverideValueP1()
  3. 'allows selecting dim on screen
  4. 'stores the dim text overide value
  5. 'Dim MyDmTxtOvrdeStr As String
  6. Dim MyDim As AcadDimension
  7. Dim MyoEnt As AcadEntity
  8. Dim MyObjSS As AcadSelectionSet
  9.    On Error Resume Next
  10.    ThisDrawing.SelectionSets("SelectDim").Delete
  11.    If Err Then Err.Clear
  12.    With ThisDrawing.Utility
  13.    
  14.        '' create a new selectionset
  15.        Set MyObjSS = ThisDrawing.SelectionSets.Add("SelectDim")
  16.        '' let user select entities interactively
  17.        MyObjSS.SelectOnScreen
  18.       
  19.        MyObjSS.Highlight True
  20.       
  21.        '' pause for the user
  22.        .prompt vbCr & MyObjSS.Count & " entities selected"
  23.        '.GetString False, vbLf & "Enter to continue "
  24.        'For Each MyoEnt In MyObjSS
  25.        For Each MyoEnt In MyObjSS
  26.       
  27.           ' If TypeOf MyoEnt Is AcadDimension Then
  28.           If TypeOf MyoEnt Is AcadDimension Then
  29.    
  30.                Set MyDim = MyoEnt
  31.                      MyDmTxtOvrdeStr = MyDim.TextOverride
  32.                        MsgBox MyDmTxtOvrdeStr
  33.                        'MyAttTextStr = myvaratt(i).TextString
  34.                        
  35.                        MyObjSS.Highlight False
  36.                    End If
  37.                Next
  38.           ' End If
  39.       ' Next
  40. End With
  41. MatchDimTextOverideValueP2
  42.   End Sub
  43. Private Sub MatchDimTextOverideValueP2()
  44. 'allows selecting dim on screen
  45. 'pastes the dim text overide value into the newly selected dim
  46. 'Dim MyDmTxtOvrdeStr As String
  47. Dim MyDim As AcadDimension
  48. Dim MyoEnt As AcadEntity
  49. Dim MyObjSS As AcadSelectionSet
  50.    On Error Resume Next
  51.    ThisDrawing.SelectionSets("SelectDim").Delete
  52.    If Err Then Err.Clear
  53.    With ThisDrawing.Utility
  54.    
  55.        '' create a new selectionset
  56.        Set MyObjSS = ThisDrawing.SelectionSets.Add("SelectDim")
  57.        '' let user select entities interactively
  58.        MyObjSS.SelectOnScreen
  59.       
  60.        MyObjSS.Highlight True
  61.       
  62.        '' pause for the user
  63.        .prompt vbCr & MyObjSS.Count & " entities selected"
  64.        '.GetString False, vbLf & "Enter to continue "
  65.        'For Each MyoEnt In MyObjSS
  66.        For Each MyoEnt In MyObjSS
  67.       
  68.           ' If TypeOf MyoEnt Is AcadDimension Then
  69.           If TypeOf MyoEnt Is AcadDimension Then
  70.    
  71.                Set MyDim = MyoEnt
  72.                
  73.                      'MyDmTxtOvrdeStr = MyDim.TextOverride
  74.                      
  75.                    MyDim.TextOverride = MyDmTxtOvrdeStr
  76.                        
  77.                        'MsgBox MyDmTxtOvrdeStr
  78.                    End If
  79.                Next
  80.           ' End If
  81.       ' Next
  82. End With
  83. End Sub

 
谢谢你的帮助。
 
PS msgbox只是我在测试,
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 17:48:25 | 显示全部楼层
Comcu公司
 
听起来你可能需要一个边做边做的循环
 
条件为真时执行
 
有了它,你就可以一直挑选,直到用户点击escape或enter
 
毫升
回复

使用道具 举报

34

主题

105

帖子

91

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
224
发表于 2022-7-6 18:01:11 | 显示全部楼层
毫升,
 
谢谢你的帮助。
 
该代码允许我一直拾取,直到按enter键。我更希望用户能够只选择一个维度,然后代码模拟用户点击enter?
 
干杯
 
Col公司
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 18:16:06 | 显示全部楼层
嗨,Col
 
不用尝试你的代码,我可以看到你正在使用selectonscreen,这很好。
 
我仍然倾向于做一个while循环
 
我们需要做一个选择=True
 
我不是做While循环的高手,似乎每次我尝试一个循环,我都需要寻求帮助。
 
如果你愿意的话,我们可以仔细看看?
 
你有可以发送的dwg文件吗?
 
毫升
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 18:38:55 | 显示全部楼层
选择集的另一种选择是ThisDrawing,特别是当首选单拾取时。公用事业GetEntity方法。例如,下面修改了线程初始帖子中的代码。与示例一样,错误检查非常有限。
 
注意:可以删除子“MatchDimTextOverideValueP2”中的循环操作,以仅允许在该点进行单次拾取。
 
  1. Public MyDmTxtOvrdeStr As String
  2. Sub MatchDimTextOverideValueP1()
  3. Dim MyDim As AcadDimension
  4. Dim MyoEnt As AcadEntity
  5. Dim varPkPt As Variant
  6.    With ThisDrawing.Utility
  7.      On Error GoTo Escapement
  8.      .GetEntity MyoEnt, varPkPt, "Select Overridden Dimension: "
  9.      
  10.      If TypeOf MyoEnt Is AcadDimension Then
  11.         Set MyDim = MyoEnt
  12.         MyDmTxtOvrdeStr = MyDim.TextOverride
  13.         MyoEnt.Highlight True
  14.         MsgBox MyDmTxtOvrdeStr
  15.         MyoEnt.Highlight True
  16.      End If
  17.   End With
  18.   
  19.   MatchDimTextOverideValueP2
  20.   
  21.   MyoEnt.Highlight False
  22. Escapement:
  23. End Sub
  24. Private Sub MatchDimTextOverideValueP2()
  25. Dim MyDim As AcadDimension
  26. Dim MyoEnt As AcadEntity
  27. Dim varPkPt As Variant
  28.    With ThisDrawing.Utility
  29.    On Error GoTo Escapement
  30.    Do
  31.      .GetEntity MyoEnt, varPkPt, "Select Dimension(s) to override: "
  32.      If TypeOf MyoEnt Is AcadDimension Then
  33.         Set MyDim = MyoEnt
  34.         MyDim.TextOverride = MyDmTxtOvrdeStr
  35.         MyoEnt.Highlight False
  36.      End If
  37.   Loop
  38.   End With
  39. Escapement:
  40. End Sub
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 17:12 , Processed in 0.597851 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表