whom2be 发表于 2004-12-29 09:58:22

将访问记录集插入到图形中

大家好...
我是该网站的新手,t-bear向我推荐了它。
我正在尝试从访问数据库中的表中导入记录。
我能够连接到数据库并从autocad内部创建记录集。我甚至能够像“我”想要的那样将记录插入到绘图中。
问题是这不是“他”想要的。
我需要的是:
用户从我的自定义用户表单中选择所有信息后,记录集中包含的数据应悬停在鼠标下方,直到他单击要将其粘贴到绘图中的位置。每个记录集都有许多行和许多列。
我目前正在使用以下内容:
ThisDrawing.PaperSpace.AddText fldPart,P,Height
(其中有几个语句,每列一
个)有了这个,我使用一个for或一个while循环,并将每行和列逐个插入到绘图中,并更改每个语句的插入点。
任何帮助或建议都将得到极大的赞赏
**** Hidden Message *****

Bashworth 发表于 2004-12-29 12:24:45

问候任何人。
这里有几个方向可供您选择。没有一个像你希望的那样简单明了。
一种方法是在新的绘图中从记录集中创建文本,保存它,然后使用send命令字符串启动ddinsert命令。用户对块插入很熟悉,但是它不是一个紧密的程序,并且您对发生的事情失去了一些控制。
另一个方向是,在一个单独的dwg文件中创建表格,并将其作为一个块插入(稍后您可以分解它),但使用一个Ghost块插入例程来方便客户端的请求。
该例程不在此站点上。在一个叫Cadvault.com的网站上。去那里,注册,并运行一个“幽灵街区”的搜索它是由一个绅士谁是该网站的成员写的。
祝您好运,如果您有任何其他问题,欢迎再次光临。

whom2be 发表于 2004-12-30 10:17:38

谢谢巴什沃斯
这给了我一个好的开始和一些好的想法。我现在非常接近我想要的方式。
但是...我还有几个其他问题。这是我的一段代码:
--------------------------------------------------------------------------------------
Set newBlock=ThisDrawing.Blocks.Add(pt1,"txtBlock")
For i=0 To iSelected-1
如果lbDrawings.Selected(i)然后
strDrawing=("select[绘图id]
from绘图
其中[绘图id] = '" & lbDrawings.Column(0, i) & "'")
Set rs=db.OpenRecordset(strDrawing, dbOpenDynaset)
Set fld绘图=rs.Fields("绘图id")
rs.MoveFirst
不rs.EOF
设置txtObj=newBlock.AddText(fld绘图, pt1,0.09)pt1(1)=pt1(1)-0.1696
rs.MoveNext
Wend
结束如果
下一步
ThisDrawing.PaperSpace.InsertBlockpt,"txtBlock",1,1,1,0
------------------------------------------------------------------------------------
好的问题是:
1.如何删除我创建的块或至少清除它。
我已经尝试了
newBlock.delete和
ThisDrawing.Blocks("txtBlock")。删除
我得到了对象所需的错误
2.Can我在将文本添加到块之前或之后格式化文本
我需要设置字体、宽度和粗体。
对于字体,我可以使用
ThisDrawing.ActiveTextStyle.SetFont“罗马人”、False、False、1、1
但我不想做全局字体更改。
任何帮助或建议都会非常感激

Bashworth 发表于 2004-12-30 11:41:26

很高兴它来了。
对于您的第一个问题。 您正在向块集合添加成员。 添加到此集合时,不会在模型空间中创建任何实际块。 如果你想要一个,你可以使用BlockReferences集合。 无需将其从集合中删除。
至于字体。 添加文本时,可以使用textObj的属性来调整字体,宽度,高度等。使用 AddText 方法后。

whom2be 发表于 2004-12-30 12:32:50

您好,谢谢……
我需要删除或清除该块的原因是,每次我运行该模块时,它都会在旧信息的基础上不断添加新信息。所以我需要的是,当我开始这个过程时,它首先删除或清除块,然后添加新的信息
现在的情况是,每次我运行它来测试它时,我都必须创建一个新块来获得一个空块。我一直这样做:
设置newBlock=ThisDrawing.Blocks。添加(pt,“txtBlock12”
然后下次运行它进行测试时
设置newBlock=ThisDrawing.Blocks。添加(pt,“txtBlock13”
对于块中的文本,我可以执行以下操作:
设置txtObj=newBlock。添加文本(flddrawing,ptDrawing,0.09)
txtObj。Color=acBlue
但没有txtObj。宽度选项,或者它被称为我不喜欢的东西
插入块并分解后,我可以右键单击并转到“属性”并设置宽度,但这会破坏vba的自动化。

Bashworth 发表于 2004-12-30 14:45:20

您需要将其保持为块吗?我以为您之前只是插入独立文本,并且您将在插入完成后爆炸块。无论如何...我必须对那个做一点研究。您是在同一个子级中调用删除方法,还是稍后再调用?
至于文本。我建议为此创建一个新样式。您正在做的一些事情(例如粗体)实际上只能从样式中使用。
如果没有,宽度是缩放因子属性(我相信)
页: [1]
查看完整版本: 将访问记录集插入到图形中