查看: 2797|回复: 5
收起左侧

[软件相关] 关于autocad+vb+excel的问题(已更新附上原代码)

[复制链接]
发表于 2010-1-2 13:47 | 显示全部楼层 |阅读模式 来自: 中国山东烟台
本帖最后由 linanguyu 于 2010-1-4 09:48 编辑

如何将从excel中读到的坐标值写入autocad,并在autocad该坐标值处写入文本,请高手指教,最好能给我简单的代码,不胜感激
Set layobjp = ThisDrawing.Layers.Add("bevel")
   ThisDrawing.ActiveLayer = layobjp
    layobjp.color = acGreen
    I = 1
   z = 0
   
   J = 0
  Do Until Cells(I, 1).Value = ""
    If Cells(I + 1, 1) = 0 Then
   Exit Do
   End If
   
  
If Left(Cells(I, 1).Value, 10) = "BEVEL_DATA" Then

  If Left(Cells(I + 1, 1).Value, 8) = "BEVEL=TS" Then
z = z + 1
  str4(z) = "TS" & " " & Mid(Cells(I + 5, 1).Value, 10, 8)
ElseIf Left(Cells(I + 1, 1).Value, 8) = "BEVEL=OS" Then
z = z + 1
str4(z) = "OS" & " " & Mid(Cells(I + 7, 1).Value, 10, 8)
  End If
  
  If Mid(Cells(I + 2, 1).Value, 12, 10) = "401.00" Or Mid(Cells(I + 2, 1).Value, 12, 10) = "-401.00" Then
str2(z) = "X"
  ElseIf Mid(Cells(I + 2, 1).Value, 12, 10) = "201.00" Or Mid(Cells(I + 2, 1).Value, 12, 10) = "-201.00" Then
  str2(z) = "V"
  ElseIf Mid(Cells(I + 2, 1).Value, 12, 10) = "306.00" Or Mid(Cells(I + 2, 1).Value, 12, 10) = "-306.00" Then
  str2(z) = "Y"
  
  End If

str3(z) = str2(z) & " " & str4(z)
   

CGx(z) = (Mid(Cells(I + 28, 1).Value, 3, 15) + Mid(Cells(I + 19, 1).Value, 9, 15)) / 2 * Scl + DX
CGy(z) = (Mid(Cells(I + 29, 1).Value, 3, 15) + Mid(Cells(I + 20, 1).Value, 9, 15)) / 2 * Scl + DY '从excel中读入坐标值
  
   End If
I = I + 1
Loop
NN = 0
Do Until Cells(I, 1).Value = ""
   
   If Cells(I + 1, 1) = 0 Then
    Exit Do
End If
      
      
  M = z
     N = 1
   
     Do Until M = -1
      If Mid(Cells(I + 1, 1).Value, 7, 11) = Mid(str4(N), 4, 8) Then
      NN = NN + 1
     CGx(1000 + NN) = CGx(N)
      CGy(1000 + NN) = CGy(N)
       Exit Do
        
     End If
     M = M - 1
       N = N + 1
    Loop
    Loop
      
  J = z
K = 1
  
Do Until J = 0
  CG(0) = CGx(1000 + K) - 50
CG(1) = CGy(1000 + K) - 50
CG(2) = 0
   
  Set textObj = ThisDrawing.ModelSpace.AddText(str3(K), CG, 200)
K = K + 1
J = J - 1
Loop
回复

使用道具 举报

龙船学院
发表于 2010-1-3 10:58 | 显示全部楼层 来自: 中国浙江舟山
可以用DXF格式的写.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-4 08:47 | 显示全部楼层 来自: 中国山东烟台
2# eryar
用dxf怎么写
回复 支持 反对

使用道具 举报

发表于 2010-1-6 22:16 | 显示全部楼层 来自: 中国浙江舟山
本帖最后由 eryar 于 2010-1-6 22:21 编辑

DXF的文件是由组码和组值组成的.
如果要写文字,可以用VB的写文件的函数把以下内容写入到
一个文件中去,并把那个文件命名为*.DXF即可,这样就可用
AutoCAD打开,效果是一样的.
以下为最小的一个DXF文件, 请根据需要修改或添加:将下面
存为Hello.dxf, 用AutoCAD打开看看有什么效果? ^_^
=======================================================
  0
SECTION
  2
ENTITIES
  0
TEXT
  8
0
10
0.0
20
0.0
30
0.0
40
2.5
  1
Hello world!
  0
ENDSEC
  0
EOF
=======================================================
若要添加文字,可以在
ENTITIES
......
  0
ENDSEC
  0
EOF
省略号的位置添加以下代码:
-------------------------------------------------------
  0
TEXT
  8
0
10
0.0
20
0.0
30
0.0
40
2.5
  1
Hello world!
-------------------------------------------------------
其中:
8的下一行为图层名;
10的下一行为X坐标;
20的下一行为Y坐标;
30的下一行为Z坐标;
40的下一行为文字高度;

附一示例文件仅供参考.demo.dxf

demo.rar

203 Bytes, 下载次数: 22

demo.rar

203 Bytes, 下载次数: 16

示例文件,在想要位置上写文字

回复 支持 反对

使用道具 举报

发表于 2010-1-6 22:27 | 显示全部楼层 来自: 中国浙江舟山
ASCII的DXF文件可以用记事本打开看里面的内容的.
回复 支持 反对

使用道具 举报

发表于 2010-1-10 12:24 | 显示全部楼层 来自: 中国湖北武汉
俺也来试试
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|标签|免责声明|龙船社区

GMT+8, 2024-9-19 08:16

Powered by Imarine

Copyright © 2006, 龙船社区

快速回复 返回顶部 返回列表