循环时无法在autocad中添加文本。
朋友们,您好    ;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为变量,高度为双精度)</  
 ;Dim textObj作为AcadText ;Dim textstring作为字符串 ;Dim insertionPoint(0到2)为双精度 ;变暗高度为双倍 ;高度=100   
 ;插入点(0)=2:插入点(1)=2:插入点(2)=0 ;textstring=MyHeight&&引用;x“&;我的宽度  
 ;设置textObj=ActiveDocument.ModelSpace。AddText(textstring,insertionPoint,height)';-我试着将这条线调用到我的循环的结束函数中,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(";textstring,Insertion点通过,100) ;j=0 ;yoffset=0
Do Until Sheets(“sheet1”)。细胞(19,3+j)。值=0 ;xoffset=0 ;i=0 ;直到工作表(“sheet1”)。细胞(19+i,3+j)。值=0   ;插入点(0)=yoffset   ;插入点(1)=xoffset   ;我的高度=张(“sheet1”)。细胞(19+i,3+j)   ;MyWidth=纸张(“sheet1”)。细胞(19+i,4+j) ;设置MyRectangle=Rectangle2(插入点、MyWidth、MyHeight) ;设置textObj=ActiveDocument.ModelSpace。AddText(textstring,insertionPoint,height)';------问题 ;如果是图纸(“Sheet1”)。单元格(19+i,5+j)=“;“打开”;然后  ;设置MyRectangle=Rectangle1(插入点、MyWidth、MyHeight)  ;如果结束  
   ;xoffset=xoffset+MyHeight   ;i=i-2 ;循环 ;yoffset=yoffset+MyWidth ;j=j+3环
**** Hidden Message ***** 乍一看,您似乎从未在test\u矩形函数中定义高度 ;由于高度没有Dim,因此变量会自动创建为变量 ;但是,由于从未给变量赋值,因此当您试图将其传递到AddText函数时,它没有值。 mmelone;感谢您的快速回复
我确实试过了;设置textObj=ActiveDocument.ModelSpace。AddText(“textstring”,insertionPoint,100)
这里我假设插入点将从循环本身获得所需的值
这也不起作用。 仍然无法解决此问题,请提供帮助 尝试使用:
Dim insertionPoint(1) As Double而不是Dim insertionPoint(1) As Variant 需要一个非2的3d点;Dim insertionPoint(0到2)为Double=良好 AutoCAD可能更严格,但BricsCAD在此接受二维点。 Sub txt\u insert()
 ;Dim textObj作为AcadText ;Dim textstring作为字符串;g作为字符串 ;Dim insertionPoint(0到2)为双精度 
   ;插入点(0)=-1000:插入点(1)=200多张(“sheet1”)。单元格(10,2)+纸张(“sheet1”)。单元格(34,2)/2:插入点(2)=0   ;设置textObj=ActiveDocument.ModelSpace。添加文本(“俯视图”,插入点,140)
   ;插入点(0)=-1500:插入点(1)=-张(“sheet1”)。单元格(34,2)/2:插入点(2)=0   ;设置textObj=ActiveDocument.ModelSpace。添加文本(“BOTTOM VIEW”,insertionPoint,140)
   ;插入点(0)=-1200:插入点(1)=-200-张(“sheet1”)。单元格(34,2)-页(“sheet1”)。单元格(22,2)/2:插入点(2)=0   ;设置textObj=ActiveDocument.ModelSpace。添加文本(“BACK VIEW”,insertionPoint,140)
   
我能够在循环之外工作,并将文本输入到drg。我的问题是,当我试图让文本在循环中写入时,我无法做到这一点 
另请看附件。我在一个框架视图(红色矩形)内绘制单个面板(蓝色矩形),以获得最佳匹配。我对这部分没意见。现在,我想在循环运行时绘制矩形之后,在矩形本身中添加每个蓝色矩形的尺寸。 对xl表的引用是否返回双精度?您可能需要在代码中设置断点,并观察它是什么,以确保正确设置了插入点(1)。如果没有,则可能需要使用CDbl()函数将其显式转换为double。 谢谢大家。问题解决了公共函数textObj(textstring为字符串,插入点为双精度,高度为双精度)  
 ;Dim textObj作为AcadText ;Dim textstring作为字符串 ;Dim insertionPoint(0到2)为双精度 ;变暗高度为双倍 ;高度=100   
 ;插入点(0)=2:插入点(1)=2:插入点(2)=0 ;textstring=MyHeight&&引用;x“&;我的宽度  
 ;设置textObj=ActiveDocument.ModelSpace。添加文本(“textstring”,insertionPoint,100)
结束函数
Sub-test\u rectangle()
将插入点(0到2)设置为双精度
Dim MyWidth设置为双增益</pDimMyHeight设置为双灵敏度textObj作为AcadText-------------------------正面 
 ' 调用ChnageAllToLyer插入点(0)=0插入点(1)=0
MyHeight=Sheets(“sheet1”)。单元格(10,2)
MyWidth=Sheets(“sheet1”)。单元格(11,2)
设置MyRectangle=Rectangle3(插入点,MyWidth,MyHeight)
insertionPoint(0)=-35插入点(1)=-35 ;j=0 ;yoffset=0
Do Until Sheets(“sheet1”)。细胞(19,3+j)。值=0 ;xoffset=0 ;i=0 ;直到工作表(“sheet1”)。细胞(19+i,3+j)。值=0   ;插入点(0)=yoffset   ;插入点(1)=xoffset   ;我的高度=张(“sheet1”)。细胞(19+i,3+j)   ;MyWidth=纸张(“sheet1”)。细胞(19+i,4+j) ;设置MyRectangle=Rectangle2(插入点、MyWidth、MyHeight) ;插入点(1)=xoffset+50 ;设置textObj=ActiveDocument.ModelSpace。添加文本(我的宽度x我的高度,插入点,100) 
 ;如果是图纸(“Sheet1”)。单元格(19+i,5+j)=“;“打开”;然后  ;设置MyRectangle=Rectangle1(插入点、MyWidth、MyHeight)  ;如果结束  
   ;xoffset=xoffset+MyHeight   ;i=i-2 ;循环 ;yoffset=yoffset+MyWidth ;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) ;j=0 ;yoffset=0
Do Until Sheets(“sheet1”)。细胞(43,3+j)=0 ;xoffset=0 ;i=0 ;直到工作表(“sheet1”)。细胞(43+i,3+j)=0   ;插入点(0)=yoffset;bsp   ;插入点(1)=xoffset+图纸(“sheet1”)。细胞(10,2)+70+100   ;我的高度=张(“sheet1”)。细胞(43+i,3+j)   ;MyWidth=纸张(“sheet1”)。细胞(43+i,4+j) ;设置MyRectangle=Rectangle2(插入点、MyWidth、MyHeight) 
 ;插入点(1)=xoffset+图纸(“sheet1”)。细胞(10,2)+70+100+50 ;设置textObj=ActiveDocument.ModelSpace。添加文本(我的宽度x我的高度,插入点,100) 
 ;如果是图纸(“Sheet1”)。细胞(43+i,5+j)=“;“打开”;然后  ;设置MyRectangle=Rectangle1(插入点、MyWidth、MyHeight) ;如果结束  
   ;xoffset=xoffset+MyHeight   ;i=i-2 ;循环 ;yoffset=yoffset+MyWidth ;j=j+3循环,随附文件供您参考。现在谈到美化部分。
问题确实是插入点被错误定义了。希望感谢57gmc/roy\u 043/mmelone&;谢谢你的回复和帮助。干杯
我需要关闭此帖子还是将其标记为已解决?请告知。再次感谢各位
页:
[1]