fanny_6 发表于 2005-7-12 14:14:00

从外部文件复制标注样式或文字样式

<P>Sub textadd()<BR>&nbsp;&nbsp;&nbsp; Dim objDBX As Object<BR>&nbsp;&nbsp;&nbsp; Set objDBX = CreateObject("ObjectDBX.AxDbDocument.16")<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; objDBX.Open "C:\\test.dwg"<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Dim objDimStyle As AcadDimStyle<BR>&nbsp;&nbsp;&nbsp; Set objDimStyle = objDBX.DimStyles.Item("INDOOR")<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; objDBX.CopyObjects objDimStyle, ThisDrawing.DimStyles<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Set objDBX = Nothing</P>
<P>End Sub</P>


<P>功能是把C:\test 的 indoor 标注样式 复制到当前图形</P>
<P>运行到粗体的那段时出错,怎样改</P>
<P>谢谢</P>

雪山飞狐_lzh 发表于 2005-7-12 15:02:00

http://www.vba.cn/object/acad2004/idh_copyfrom.htm

fanny_6 发表于 2005-7-12 15:30:00

<P>好像不大一样的,仍未解决</P>

fanny_6 发表于 2005-7-12 15:40:00

<TABLE cellSpacing=0 cellPadding=2 width="100%" border=0>
<TBODY>
<TR>
<TD class=TopLighNav1 width=* height=22><B><A name=402></A>利用ObjectDBX技术导入其它图形中的图层设置和文字样式设置</B></TD></TR>
<TR>
<TD class=tablebody1 width=* height=20><FONT color=#800000>本文作者:mccad(明以CAD社区</FONT> <FONT color=#800000>管理员)</FONT>
<P><FONT color=#000080>&nbsp;&nbsp;</FONT>&nbsp; 利用ObjectDBX技术,我们可以做很多以前从没有听说的事情,这也许在国内还没有人去试过吧。<BR>&nbsp;&nbsp;&nbsp; 在VBA和LISP专栏中,大家可以看到我们利用该技术来插入其它图形中的图块,这应该算是复杂的编程方法,一些简单一点的就是通过该技术修改未打开图形的一些对象属性等,或查找一些有用的信息等。<BR>&nbsp;&nbsp;&nbsp; 你可以通过该技术打得到未打开图形的图形特性(也就是图形特性框中显示的内容)。<BR>&nbsp;&nbsp;&nbsp; 在这里我们再介绍一些很好用的技术。<BR>&nbsp;&nbsp;&nbsp; 我们在做软件时可以附一个模板给用户,按以前的做法,一定要要求用户使用你指定的模块做为图形样板, 这样才能做到你软件的准确性。<BR>&nbsp;&nbsp;&nbsp; 后来有些程序就是什么图层、标注样式、文字样式等都是通过程序来生成。<BR>&nbsp;&nbsp;&nbsp; 现在没有这个必要了,我们可以通过一个模板,把你的设置的东西全部放到模板文件中,然后通过ObjectDBX技术直接从模板里面取出放引入到当前图形中。<BR>&nbsp;&nbsp;&nbsp; 其实代码很简单:</P>
<BLOCKQUOTE><PRE><FONT color=#000080>'插入外部图形配置好的图层
Sub InsLayer()
    Dim objDbx As AxDbDocument
    Dim objLayer(0) As Object
    Set objDbx = GetInterfaceObject("ObjectDBX.AxDbDocument.16")
    objDbx.Open "c:\1.dwg"
    Set objLayer(0) = objDbx.Layers("3")
    objDbx.CopyObjects objLayer, ThisDrawing.ModelSpace
    Set objDbx = Nothing
End Sub
'插入外部图形配置好的文字样式
Sub InsStyle()
    Dim objDbx As AxDbDocument
    Dim objStyle(0) As Object
    Set objDbx = GetInterfaceObject("ObjectDBX.AxDbDocument.16")
    objDbx.Open "c:\1.dwg"
    Set objStyle(0) = objDbx.TextStyles("hztxt")
    objDbx.CopyObjects objStyle, ThisDrawing.ModelSpace
    Set objDbx = Nothing
End Sub</FONT></PRE></BLOCKQUOTE>
<P>&nbsp;&nbsp;&nbsp; 使用以上代码时注意如果当前图形中存在相同名称的样式时,则不能导入,但也不会出错,所以在导入前先判断同名的样式是否存在,存在时则不要导入。<BR>&nbsp;&nbsp;&nbsp; 例子中只举了引入图层和引入文字样式的例子,其它如标注样式、线型均可以通过这个方法来做,特别是线型,如果你线型中存在有特殊定义的东西,用导入的方法比直接编程要方便得多。&nbsp;<BR>&nbsp;&nbsp;&nbsp; 另外,在导入图层时,如果图层中有配套的线型也会同时被导入。而不必先编程导入线型。 </P></TD></TR>
<TR>
<TD class=tableBorder2 align=right width=* height=20><A href="http://www.mjtd.com/e-zine/mezine0504.HTM#00" target="_blank" >返回目录</A></TD></TR></TBODY></TABLE>
<P>&nbsp;</P>
<P>参照一下这个,问 标注样式 应该怎样写??????</P>

雪山飞狐_lzh 发表于 2005-7-12 20:05:00

<FONT color=#000080>objStyle是数组,而不是对象</FONT>

fanny_6 发表于 2005-7-13 09:11:00

i know.thanks
页: [1]
查看完整版本: 从外部文件复制标注样式或文字样式