sublim21 发表于 2022-7-7 17:01:01

使用Excel更改中的文本

嘿伙计们,
 
我的问题基本上是这样的,假设我有一个excel单元格,我想用它的值作为我使用文本覆盖的维度的文本,我该怎么做?
 
举个例子,我有一条线,它现在被标注了尺寸。标注调用使用文字替代功能,当前标记为“Fs=4in”。在我的excel电子表格中,单元格A1的值为8,如何使autocad中的文本现在显示“Fs=8in”?
 
提前谢谢你帮我解决问题
 
期待着向大家提问,并了解更多有关autocad的信息。
 
-皮特

BIGAL 发表于 2022-7-7 17:04:47

正确的方法是以参数化方式定义图形对象,如果在excel中更改值,则对象将更改以反映真实长度并显示真实尺寸。
 
四处询问,但他们的是一个名为“SHAFT”的旧示例,关于autocad R12版本更改excel值图形更改。
 
仅仅更改文本值不是一个好主意。绘图对象应该始终是某个事物外观的真实指示。更好的方法是根据excel输入绘制对象。在说什么的时候,你在这里画粘贴图片等等。
 
使用其他软件,使用用户输入法进行数据处理,然后为您绘制数据,这是一个不错的选择。一个例子是“struc plus”结构化软件,它用有限的块来绘制所有的东西,你无法与它匹敌。

sublim21 发表于 2022-7-7 17:11:30

感谢bigal,
 
我试着寻找你在帖子中发布的演示,但一直找不到,也许你可以提供一个链接或更多关于演示的信息。
 
autocad图形的主要用途是显示作用在构件上的力的位置、标签和大小。第二个问题是正确缩放图形。
 
感谢您的帮助,希望有人知道如何做到这一点。
 
-皮特

khoshravan 发表于 2022-7-7 17:13:08

 
AutoCad的主要用途是按比格尔所述的比例绘制。我不认为AutoCad是实现预期目的的好选择。如果我是你,我会为此使用MicroSoft Visio。
 
顺便问一下,“文本覆盖”是什么意思。是否要更改尺寸线中文字/数字的值?

sublim21 发表于 2022-7-7 17:17:17

这是我工作中最适用的程序。它也往往在每个工程办公室可用。Visio没有相同的市场渗透率。
 
那么我该怎么做呢?
 
一如既往,感谢大家的帮助,
 
-皮特

rkent 发表于 2022-7-7 17:21:54

也许这会有所帮助。
http://lynn.blogs.com/lynn_allens_blog/2010/07/an-autocad-video-tip-on-linking-excel-with-autocad-tables.html

BIGAL 发表于 2022-7-7 17:23:26

您可以使用包含值的excel,并更新图形中的块属性值
 
您只需要一个列引用=属性的名称
 
长宽高
3         4      5
 
 
在dwg中,一个或多个块的属性为长度、高度和宽度。
 
我不使用这个,但在这里搜索“excel”有很多,他们确实有如何使用excel更新块的示例和代码。幸运的是,索蒙会读到这篇文章并给你发帖。

10west 发表于 2022-7-7 17:26:13

本例只需在Excel activeworkbook sheet1中检查单元格A1中的值,并将该值加载到可以传递到AutoCAD图形的变量中。我一时想不起来如何更改或设置被覆盖的值,但您可能已经做到了,所以您只需将该变量从Excel函数传递给AutoCAD即可。
“Fs=”&newVal&“in”
 
============裸Excel单元格值到AutoCAD-VB连接

Private Sub CommandXL1_Click()

Dim AutoCAD As acadapplication
Dim Thisdrawing As AcadDocument 'as Object
Dim activedocument As Object
Dim SSET2 As Object
Dim ent As AcadEntity 'as Object
Dim Excel As Object
Dim excelSheet As Object
Dim application As Object
Dim newVal As String
Dim newValtoAcad As String

'On Error Resume Next
Set Excel = GetObject(, "Excel.Application")
If Err <> 0 Then
Err.Clear
Set Excel = CreateObject("Excel.Application")
If Err <> 0 Then
MsgBox "Could not load Excel.", vbExclamation
End
End If
End If

Set excelSheet = Excel.ActiveWorkbook.Sheets("Sheet1")
Set acadapp = GetObject(, "autocad.application")
Set Thisdrawing = acadapp.activedocument
Set SSET2 = Thisdrawing.SelectionSets.Add(str(Timer))

SSET2.SelectOnScreen

R = 1
'YOU'LL HAVE TO EXPERIMENT HERE
For Each ent In SSET2
newVal = excelSheet.Cells(R, 1).Value
newValtoAcad = "Fs = " & newVal & "in"
Next ent

End Sub

=============================
 
另一种有一些真正破解可能性的替代方法是将Excel命名范围与AutoCAD组名相关联,然后您可以仔细阅读Excel名称并获取其值,并通过使用AutoCAD中的命名选择集(即“组名”)从逻辑上选择相同的“名称”。
==========例如提取

For x = 1 To Excel.application.Names.count 'see in context below
excname = Excel.application.Names(x).Name
strgroup = Trim(UCase(excname))
Set SSET2 = Thisdrawing.Groups.Item(strgroup)
Set objGroups = Thisdrawing.Groups
If UCase(objGroup.Name) = strgroup Then
DoEvents
Thisdrawing.Groups.Item(strgroup).Item(0).TextString = Excel.application.Range(excname).Value
Thisdrawing.Groups.Item(strgroup).Item(0).Highlight True
End If

Next

在具有Excel命名范围和AutoCAD组名的例程中

Private Sub CommandXL2_Click()
On Error Resume Next
Dim AutoCAD As acadapplication
Dim Thisdrawing As AcadDocument
Dim activedocument As Object
Dim SSET2 As Object
Dim Excel As Object
Dim excelSheet As Object
Dim application As Object
Dim strgroup As String
Set Excel = GetObject(, "Excel.Application") 'connect to open excel session
If Err <> 0 Then
Err.Clear
Set Excel = CreateObject("Excel.Application") 'open an excel application session (if you know it's going to be available, delete this)
If Err <> 0 Then
MsgBox "Could not load Excel.", vbExclamation
End
End If
End If
''On Error Resume Next
Set acadapp = GetObject(, "autocad.application") 'connect to AutoCAD app
Set Thisdrawing = acadapp.activedocument


DoEvents

For x = 1 To Excel.application.Names.count 'cycle through names in Excel
excname = Excel.application.Names(x).Name 'Set excel name to a var
strgroup = Trim(UCase(excname)) 'set var to correlate to acad group name, set to upper case for a consistent pattern, all upper, no case sensitivity
Set SSET2 = Thisdrawing.Groups.Item(strgroup) 'relate the excname, to it's correlated acad group name, and select by that name
Set objGroups = Thisdrawing.Groups 'set acad groups obj
If UCase(objGroup.Name) = strgroup Then
DoEvents
Excel.application.Range(excname).Value = UCase(Thisdrawing.Groups.Item(excname).Item(0).TextString) 'set excel value from acad
'the below flips the data transfer
UCase(Thisdrawing.Groups.Item(excname).Item(0).TextString) = Excel.application.Range(excname).Value 'set acad value from excel

End If
Next
End Sub

Asad Saeed 发表于 2022-7-7 17:31:00

如何通过Excel控制尺寸?
请告诉我我不擅长AutoCAD。

ReMark 发表于 2022-7-7 17:35:48

Asad:
 
欢迎来到CADTutor论坛。
 
也许您需要的是Jeffery P.Sanders lisp程序,称为XL-Excel to AutoCAD v3.1,它以这种方式描述。。。。
 
XL-此程序允许您将保存在Excel中的信息发送到AutoCAD绘图。您可以让程序绘制图表、替换文本值或替换属性值
 
该程序以及更详细的解释和屏幕截图也可以在这里找到:
 
http://www.jefferypsanders.com/autolisp_XL.html
页: [1] 2
查看完整版本: 使用Excel更改中的文本