乐筑天下

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

江湖救急!

[复制链接]

2

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2004-8-12 22:12:00 | 显示全部楼层 |阅读模式
雪山飞狐版主及众高手您们好:
                         本人学习了几年cad,但编程技术刚开始学,很菜。前几天看到一篇论文,很感兴趣(论文见附件),现求教:论文用vba扩展数据知识编写,只用1000及1001组码,看似简单但始终摸不到头绪,到最后用扩展数据替代表行块属性,不知怎么做。请版主及众高手在百忙之中帮我忙活一下,编出此程序,告诉我要点,感激不尽。先谢过大家及版主!mshuser@sohu.com

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

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

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-8-13 09:13:00 | 显示全部楼层
要编制两个程序
第一个标注序号,并写入XData
第二个读取XData,生成明细表
回复

使用道具 举报

2

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2004-8-13 14:23:00 | 显示全部楼层
飞狐版主:
给我点源代码,好不好?多谢多谢!
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-8-14 10:58:00 | 显示全部楼层
源代码帮助里都有,:)
你可以试着编编,编不下去了,贴上来给大家批批
回复

使用道具 举报

2

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2004-8-14 17:03:00 | 显示全部楼层
飞狐版主:
这是我写的输入代码,请问如何加入扩展数据?
daihao.setxdata 1000,"daihao"这样不行吧?
Sub ShuRu()
Dim xuahao As Integer
Dim daihao As String
Dim mingcheng As String
Dim shuliang As Integer
Dim cailiao As String
Dim danjian As Double
Dim zongji As Double
Dim beizhu As String
xuahao = ThisDrawing.Utility.GetString(1, vbCrLf & "序号")
daihao = ThisDrawing.Utility.GetString(1, vbCrLf & "代号")
mingcheng = ThisDrawing.Utility.GetString(1, vbCrLf & "名称")
shuliang = ThisDrawing.Utility.GetString(1, vbCrLf & "数量")
cailiao = ThisDrawing.Utility.GetString(1, vbCrLf & "材料")
danjian = ThisDrawing.Utility.GetString(1, vbCrLf & "单件重量")
zongji = ThisDrawing.Utility.GetString(1, vbCrLf & "总重量")
beizhu = ThisDrawing.Utility.GetString(1, vbCrLf & "备注")
End Sub
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-8-14 17:51:00 | 显示全部楼层
看看帮助里的例子:
Sub Example_SetXdata()
                         ' This example creates a line and attaches extended data to that line.
                         
                         ' Create the line
                         Dim lineObj As AcadLine
                         Dim startPt(0 To 2) As Double, endPt(0 To 2) As Double
                         startPt(0) = 1#: startPt(1) = 1#: startPt(2) = 0#
                         endPt(0) = 5#: endPt(1) = 5#: endPt(2) = 0#
                         Set lineObj = ThisDrawing.ModelSpace.AddLine(startPt, endPt)
                         ZoomAll                         ' Initialize all the xdata values. Note that first data in the list should be
                         ' application name and first datatype code should be 1001
                         Dim DataType(0 To 9) As Integer
                         Dim Data(0 To 9) As Variant
                         Dim reals3(0 To 2) As Double
                         Dim worldPos(0 To 2) As Double
                         
                         DataType(0) = 1001: Data(0) = "Test_Application"
                         DataType(1) = 1000: Data(1) = "This is a test for xdata"                         DataType(2) = 1003: Data(2) = "0"                                                                                                                                                 ' layer
                         DataType(3) = 1040: Data(3) = 1.23479137438413E+40         ' real
                         DataType(4) = 1041: Data(4) = 1237324938                                                                                         ' distance
                         DataType(5) = 1070: Data(5) = 32767                                                                                                                                 ' 16 bit Integer
                         DataType(6) = 1071: Data(6) = 32767                                                                                                                                 ' 32 bit Integer
                         DataType(7) = 1042: Data(7) = 10                                                                                                                                                         ' scaleFactor                         reals3(0) = -2.95: reals3(1) = 100: reals3(2) = -20
                         DataType(8) = 1010: Data(8) = reals3                                                                                                                         ' real
                         
                         worldPos(0) = 4: worldPos(1) = 400.99999999: worldPos(2) = 2.798989
                         DataType(9) = 1011: Data(9) = worldPos                                                                                                         ' world space position
                         
                         ' Attach the xdata to the line
                         lineObj.SetXData DataType, Data
                         
                         ' Return the xdata for the line
                         Dim xdataOut As Variant
                         Dim xtypeOut As Variant
                         lineObj.GetXData "", xtypeOut, xdataOut
                         
End Sub         
回复

使用道具 举报

2

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2004-8-14 23:04:00 | 显示全部楼层
版主好:
看过帮助还有问题:如何定义序号的图元对象?定义为何种类型?怎样给其赋值?
如版主对此程序已胸有成竹,还望将编程思路讲讲,不吝赐教。再次叩谢!
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2004-8-15 09:36:00 | 显示全部楼层
序号可以使用块对象,其实就是零件号吧。当插入序号时,要求用户输入材料的各项数据,同时将之后的序号推后一个数,当删除序号时,将之前的序号前移一个数。最后按序号的顺序生成明细表。
回复

使用道具 举报

2

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2004-8-16 16:16:00 | 显示全部楼层
请版主不要烦:还有问题:
1。可不可以插入一个在cad中做的图块?我看过郑工的《vba开发精彩实例教程>
好像利用objetdbx,太复杂了,有简单的方法吗?
2。论文中的两个图块在vba中做还是在cad中作?
3。天涯孤客斑竹的意思是定义“序号”为一块对象,再将文字对象添加到序号图块中?是这样吗?
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-8-16 18:20:00 | 显示全部楼层
你可以在cad中做一个属性块,Vba里调用InsertBlock方法插入,再用SetXData方法附加扩展数据
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-16 03:11 , Processed in 0.498101 second(s), 77 queries .

© 2020-2025 乐筑天下

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