乐筑天下

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

循环时无法在autocad中添加文本。

[复制链接]

2

主题

37

帖子

2

银币

初来乍到

Rank: 1

铜币
45
发表于 2016-5-10 12:12:23 | 显示全部楼层 |阅读模式
朋友们,您好&nbsp&nbsp&nbsp VBA新手,请原谅我的无知
我有一个excel电子表格,用于在多个视图中创建一个图形(实际上,多个面板嵌套在一个大盒子的不同视图中,即前视图/侧视图/顶视图等);我已经画好了面板。这部分没问题;现在,当谈到填充每个面板上方的面板尺寸时,我面临一个问题。当代码在循环外工作时,它运行良好,但当我尝试循环它时……没有运气。谁能帮忙吗
代码看起来像这样
公共函数矩形1(插入点为变量,宽度为两倍,高度为两倍)为AcadLWPolyline(0到15)为双插入点(1)+高度(6)=插入点(0)+宽度:垂直列表(7)=插入点值(1)
垂直列表(14) =插入点(0)+宽度:VerticesList(15)=插入点(1)
设置矩形1=ActiveDocument.ModelSpace.AddLightWeightPolyline(VerticesList)
Rectangle1.Closed=True
矩形1.Update
End Function
公共函数AddText(textstring为字符串,insertionPoint为变量,高度为双精度)</&nbsp&nbsp
&nbsp;Dim textObj作为AcadText&nbsp;Dim textstring作为字符串&nbsp;Dim insertionPoint(0到2)为双精度&nbsp;变暗高度为双倍&nbsp;高度=100&nbsp&nbsp&nbsp
&nbsp;插入点(0)=2:插入点(1)=2:插入点(2)=0&nbsp;textstring=MyHeight&amp&引用;x“&amp;我的宽度&nbsp&nbsp
&nbsp;设置textObj=ActiveDocument.ModelSpace。AddText(textstring,insertionPoint,height)&#039;-我试着将这条线调用到我的循环的结束函数中,Dim insertionPoint(1)作为变量,Dim MyWidth作为Double;Dim textObj1作为AcadText-------------------------前插入点(0)=0插入点(1)=0
MyHeight=Sheets(“sheet1”)。单元格(10,2)
MyWidth=Sheets(“sheet1”)。单元格(11,2)
设置MyRectangle=Rectangle2(插入点,MyWidth,MyHeight)
insertionPoint(0)=-35插入点(1)=-35
设MyRectangel=Recantgle2(insertionPoint,MyWidth+70,MyHeigh+70)
设textObj1=textObj(&quot;textstring,Insertion点通过,100)&nbsp;j=0&nbsp;yoffset=0
Do Until Sheets(“sheet1”)。细胞(19,3+j)。值=0&nbsp;xoffset=0&nbsp;i=0&nbsp;直到工作表(“sheet1”)。细胞(19+i,3+j)。值=0&nbsp&nbsp&nbsp;插入点(0)=yoffset&nbsp&nbsp&nbsp;插入点(1)=xoffset&nbsp&nbsp&nbsp;我的高度=张(“sheet1”)。细胞(19+i,3+j)&nbsp&nbsp&nbsp;MyWidth=纸张(“sheet1”)。细胞(19+i,4+j)&nbsp;设置MyRectangle=Rectangle2(插入点、MyWidth、MyHeight)&nbsp;设置textObj=ActiveDocument.ModelSpace。AddText(textstring,insertionPoint,height)&#039;------问题&nbsp;如果是图纸(“Sheet1”)。单元格(19+i,5+j)=“;“打开”;然后&nbsp&nbsp;设置MyRectangle=Rectangle1(插入点、MyWidth、MyHeight)&nbsp&nbsp;如果结束&nbsp&nbsp
&nbsp&nbsp&nbsp;xoffset=xoffset+MyHeight&nbsp&nbsp&nbsp;i=i-2&nbsp;循环&nbsp;yoffset=yoffset+MyWidth&nbsp;j=j+3环

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2016-5-10 16:11:08 | 显示全部楼层
乍一看,您似乎从未在test\u矩形函数中定义高度&nbsp;由于高度没有Dim,因此变量会自动创建为变量&nbsp;但是,由于从未给变量赋值,因此当您试图将其传递到AddText函数时,它没有值。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2016-5-10 21:27:33 | 显示全部楼层
mmelone;感谢您的快速回复
我确实试过了;设置textObj=ActiveDocument.ModelSpace。AddText(“textstring”,insertionPoint,100)
这里我假设插入点将从循环本身获得所需的值
这也不起作用。
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2016-5-14 11:03:35 | 显示全部楼层
仍然无法解决此问题,请提供帮助
回复

使用道具 举报

7

主题

100

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2016-5-15 03:50:47 | 显示全部楼层
尝试使用:
  1. Dim insertionPoint(1) As Double
而不是
  1. Dim insertionPoint(1) As Variant
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2016-5-15 11:34:47 | 显示全部楼层
需要一个非2的3d点;Dim insertionPoint(0到2)为Double=良好
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2016-5-15 16:24:32 | 显示全部楼层
AutoCAD可能更严格,但BricsCAD在此接受二维点。
回复

使用道具 举报

7

主题

100

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2016-5-17 09:03:49 | 显示全部楼层
Sub txt\u insert()
&nbsp;Dim textObj作为AcadText&nbsp;Dim textstring作为字符串;g作为字符串&nbsp;Dim insertionPoint(0到2)为双精度&nbsp
&nbsp&nbsp&nbsp;插入点(0)=-1000:插入点(1)=200多张(“sheet1”)。单元格(10,2)+纸张(“sheet1”)。单元格(34,2)/2:插入点(2)=0&nbsp&nbsp&nbsp;设置textObj=ActiveDocument.ModelSpace。添加文本(“俯视图”,插入点,140)
&nbsp&nbsp&nbsp;插入点(0)=-1500:插入点(1)=-张(“sheet1”)。单元格(34,2)/2:插入点(2)=0&nbsp&nbsp&nbsp;设置textObj=ActiveDocument.ModelSpace。添加文本(“BOTTOM VIEW”,insertionPoint,140)
&nbsp&nbsp&nbsp;插入点(0)=-1200:插入点(1)=-200-张(“sheet1”)。单元格(34,2)-页(“sheet1”)。单元格(22,2)/2:插入点(2)=0&nbsp&nbsp&nbsp;设置textObj=ActiveDocument.ModelSpace。添加文本(“BACK VIEW”,insertionPoint,140)
&nbsp&nbsp&nbsp
我能够在循环之外工作,并将文本输入到drg。我的问题是,当我试图让文本在循环中写入时,我无法做到这一点&nbsp
另请看附件。我在一个框架视图(红色矩形)内绘制单个面板(蓝色矩形),以获得最佳匹配。我对这部分没意见。现在,我想在循环运行时绘制矩形之后,在矩形本身中添加每个蓝色矩形的尺寸。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2016-5-17 11:10:17 | 显示全部楼层
对xl表的引用是否返回双精度?您可能需要在代码中设置断点,并观察它是什么,以确保正确设置了插入点(1)。如果没有,则可能需要使用CDbl()函数将其显式转换为double。
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2016-5-17 11:54:06 | 显示全部楼层
谢谢大家。问题解决了公共函数textObj(textstring为字符串,插入点为双精度,高度为双精度)&nbsp&nbsp
&nbsp;Dim textObj作为AcadText&nbsp;Dim textstring作为字符串&nbsp;Dim insertionPoint(0到2)为双精度&nbsp;变暗高度为双倍&nbsp;高度=100&nbsp&nbsp&nbsp
&nbsp;插入点(0)=2:插入点(1)=2:插入点(2)=0&nbsp;textstring=MyHeight&amp&引用;x“&amp;我的宽度&nbsp&nbsp
&nbsp;设置textObj=ActiveDocument.ModelSpace。添加文本(“textstring”,insertionPoint,100)
结束函数
Sub-test\u rectangle()
将插入点(0到2)设置为双精度
Dim MyWidth设置为双增益</pDimMyHeight设置为双灵敏度textObj作为AcadText-------------------------正面&nbsp
&nbsp' 调用ChnageAllToLyer插入点(0)=0插入点(1)=0
MyHeight=Sheets(“sheet1”)。单元格(10,2)
MyWidth=Sheets(“sheet1”)。单元格(11,2)
设置MyRectangle=Rectangle3(插入点,MyWidth,MyHeight)
insertionPoint(0)=-35插入点(1)=-35&nbsp;j=0&nbsp;yoffset=0
Do Until Sheets(“sheet1”)。细胞(19,3+j)。值=0&nbsp;xoffset=0&nbsp;i=0&nbsp;直到工作表(“sheet1”)。细胞(19+i,3+j)。值=0&nbsp&nbsp&nbsp;插入点(0)=yoffset&nbsp&nbsp&nbsp;插入点(1)=xoffset&nbsp&nbsp&nbsp;我的高度=张(“sheet1”)。细胞(19+i,3+j)&nbsp&nbsp&nbsp;MyWidth=纸张(“sheet1”)。细胞(19+i,4+j)&nbsp;设置MyRectangle=Rectangle2(插入点、MyWidth、MyHeight)&nbsp;插入点(1)=xoffset+50&nbsp;设置textObj=ActiveDocument.ModelSpace。添加文本(我的宽度x我的高度,插入点,100)&nbsp
&nbsp;如果是图纸(“Sheet1”)。单元格(19+i,5+j)=“;“打开”;然后&nbsp&nbsp;设置MyRectangle=Rectangle1(插入点、MyWidth、MyHeight)&nbsp&nbsp;如果结束&nbsp&nbsp
&nbsp&nbsp&nbsp;xoffset=xoffset+MyHeight&nbsp&nbsp&nbsp;i=i-2&nbsp;循环&nbsp;yoffset=yoffset+MyWidth&nbsp;j=j+3循环顶部插入点(0)=0
插入点(1)=板材(“板材1”)。单元格(10,2)+70+100
MyHeight=Sheets(“sheet1”)。单元格(34,2)
MyWidth=Sheets(“sheet1”)。单元格(35,2)
设置MyRectangle=Rectangle3(插入点,MyWidth,MyHeight)
insertionPoint(0)=-35插入点(1)=-35+张纸(“sheet1”)。单元格(10,2)+70+100设置MyRectangle=Rectangle3(插入点,MyWidth+70,MyHeight+70)&nbsp;j=0&nbsp;yoffset=0
Do Until Sheets(“sheet1”)。细胞(43,3+j)=0&nbsp;xoffset=0&nbsp;i=0&nbsp;直到工作表(“sheet1”)。细胞(43+i,3+j)=0&nbsp&nbsp&nbsp;插入点(0)=yoffset;bsp&nbsp&nbsp&nbsp;插入点(1)=xoffset+图纸(“sheet1”)。细胞(10,2)+70+100&nbsp&nbsp&nbsp;我的高度=张(“sheet1”)。细胞(43+i,3+j)&nbsp&nbsp&nbsp;MyWidth=纸张(“sheet1”)。细胞(43+i,4+j)&nbsp;设置MyRectangle=Rectangle2(插入点、MyWidth、MyHeight)&nbsp
&nbsp;插入点(1)=xoffset+图纸(“sheet1”)。细胞(10,2)+70+100+50&nbsp;设置textObj=ActiveDocument.ModelSpace。添加文本(我的宽度x我的高度,插入点,100)&nbsp
&nbsp;如果是图纸(“Sheet1”)。细胞(43+i,5+j)=“;“打开”;然后&nbsp&nbsp;设置MyRectangle=Rectangle1(插入点、MyWidth、MyHeight)&nbsp;如果结束&nbsp&nbsp
&nbsp&nbsp&nbsp;xoffset=xoffset+MyHeight&nbsp&nbsp&nbsp;i=i-2&nbsp;循环&nbsp;yoffset=yoffset+MyWidth&nbsp;j=j+3循环,随附文件供您参考。现在谈到美化部分。
问题确实是插入点被错误定义了。希望感谢57gmc/roy\u 043/mmelone&amp;谢谢你的回复和帮助。干杯
我需要关闭此帖子还是将其标记为已解决?请告知。再次感谢各位
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-4-20 01:07 , Processed in 1.357542 second(s), 78 queries .

© 2020-2025 乐筑天下

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