bzjustb 发表于 2004-2-5 16:03:00

[求助]有几个问题请各位指点一下,麻烦大家进来看看........(焦急中....)

本帖最后由 作者 于 2004-2-6 15:11:22 编辑 <br /><br /> 首先感谢明经通道及各位网友!<BR>我刚接触autocad       vba ,在做一个工程辅助设计的课题,拜读了站长及斑竹的大作(《精彩实例》),比着葫芦画瓢解决了许多实际问题,<BR>尽管我在数据结构、程序设计方面也不是很精通,还是给了我很大信心,感谢!<BR>由于时间紧迫,碰到一些问题来不及自己仔细琢磨,请教大家指点迷津,少走点弯路,先行谢过各位!<BR><FONT face=隶书 color=#ee1111 size=3>问题1、</FONT>一组给出高程值的等高线(polyline,lwpolyline)如何生成一个剖切平面,以求该平面与该组等高线的交点?<BR>       怎样生成象xline那样的一个无限伸长的平面并且可以得到与polyline,lwpolyline相交的点图元?我试过addsolid ,add3dsolid,add3dface...<BR>       好象都不行呀。我的做法是建立选集把所有等高线的高程值设为0#,得到一系列点,然后以各点做垂直与xy平面的ray或xline,再与恢复高程值的<BR>polyline,lwpolyline求交点,大家有更好的方法么?<BR><FONT face=隶书 color=#ff0000 size=3>问题2、</FONT>请参阅以下代码:



’dgxselectionset是一个选集用来选取作为分析对象的等高线<BR>’dgxselect                                       是选集中的各条等高线<BR>’pmzkd                                                                       是各条等高线与一个生成的直线的交点阵列


While count1 &gt; 0<BR>                               ‘选取等高线选集中的各条等高线<BR>                       Set dgxselect = dgxselectionset.Item(count1 - 1)               <BR>                               Dim pmxkzd As Variant<BR>                                       ’求得各条等高线与 pqx的交点<BR>                               pmxkzd = dgxselect.IntersectWith(pqx, acExtendNone)<BR>        <BR>                               Dim w As Integer<BR>                               Dim y As Integer <BR>                               Dim str As String<BR>                                                       y = 0<BR>                                       If VarType(pmxkzd) &lt;&gt; vbEmpty Then<BR>                                                                               For w = LBound(pmxkzd) To UBound(pmxkzd)


                                                                                                               str = "交点[" &amp; z &amp; "]的坐标为:" &amp; pmxkzd(y) &amp; "," &amp; pmxkzd(y + 1) &amp; "," &amp; pmxkzd(y + 2)<BR>       <BR>                                                                                                                               Dim pqpt() As AcadPoint<BR>                                                                                                                               Dim pmxpt(2) As Double<BR>                                                                                                                                                                       pmxpt(0) = pmxkzd(y)<BR>                                                                                                                                                                       pmxpt(1) = pmxkzd(y + 1)<BR>                                                                                                                                                                       pmxpt(2) = pmxkzd(y + 2)<BR>                                                                                                                               ReDim pqpt(z)<BR>                                                                                                                       ‘生成数组存储交点<BR>                                                                                                                       Set pqpt(z) = ThisDrawing.ModelSpace.AddPoint(pmxpt)<BR>                                                                                                                                                       pqpt(z).Color = acWhite<BR>                                                                                                                                                       pqpt(z).Update<BR>                                                                                                                               MsgBox str<BR>                       <BR>                                                                                                                               y = y + 3<BR>                                                                                                                               w = w + 2<BR>                                                                                                                               z = z + 1<BR>                                                                                               Next<BR>                               End If<BR>                                       dgxselect.Color = acBlue<BR>        <BR>               count1 = count1 - 1<BR>       Wend


dgxselectionset.Delete


<FONT color=#e66b1a size=2>我的问题是:</FONT>a,跳出循环后我如何取得程序中获得的所有的交点?(一般我能得到六、七十个交点,可是只能访问最后一个点,请大家帮我修改一下循环内部或其他处的程序)<BR>                                                                                                                        b,用什么方法复制这些点,并“粘贴”到另外一个dwg 图形中?copyobjects方法?还是用选集?还是建立组,用appenditems方法?还是建立块,用addpoint方法?哪个更合理?<BR>                                                                                       


<FONT face=隶书 color=#f70909 size=3>问题3、</FONT>已知一系列点,如何根据他们及其他一些约束用插值、拟合的方法生成一定长度的一系列线段?大家有没有autocad vba相关的算法,程序代码提供一下?<BR><FONT face=隶书 color=#f70909 size=3>问题4、</FONT>用vba的程序代码怎样实现:新建一图形,在其上建立x、y坐标轴,并在坐标轴上标注类似刻度的尺度标注,是不是用addleader方法?<BR><FONT face=隶书 color=#ff0000 size=3>问题5、</FONT>俯视图,左视图,西南等轴观测图等三维视图的viewport坐标值分别是多少?<BR><FONT face=隶书 color=#f73809 size=3>问题6、</FONT>我想建立access数据库与autocad连接,用datagrid、MHFlexgrid等控件显示数据,adodc控件控制,能否实现?<BR><FONT face=隶书 color=#ff0000 size=3>问题7、</FONT>哪位顺便通俗地解释一下句柄,字典(dictionary),扩展数据xdata都是干什么用的?<BR><FONT face=隶书 color=#ff0000 size=3>问题8、</FONT>在一曲线上(polyline,lwpolyline,spline)如何做任意一点的垂线,切线?<BR>大家若有相关代码提供,不胜感激!谨领大家高见!










文字

bzjustb 发表于 2004-2-6 15:23:00

<FONT face=隶书 color=#f70968 size=3>再问:</FONT>记得以前用vb做数据库设计,用一个adodc控件联接数据库,用datagrid或msflexgrid控件显示数据库字段内容(感知),只要把datagrid的datasource属性值设为adodc就可以啦,我在autocad vba中,在datagrid属性框中找不到datasource属性,用代码编写提示方法不可用,为什么?

mccad 发表于 2004-2-6 18:20:00

问题2:内容循环时可以使用动态数组来保存你生成的交点,也就是使用<BR>Dim IntPnt() as Variant<BR>ReDim IntPnt(0) <BR>然后在程序中每增加一个点则使用<BR>ReDim Preserve IntPnt(UBound(IntPnt)+1)<BR>来增加数组的元素数量。


因为你说的点只是数值,而不是实际存在的对象,你可以通过临时的文本文件来保存并在其它图形中打开使用,如果你是在同一过程中使用,则可以直接使用这些变量的值。


问题3:点已经有了,就可以使用<BR>AddLightweightPolyline 从顶点列表创建优化多段线的方法来创建线,并按照你的要求进行拟合等操作。


问题4:你可以通过AddLine画出一个单位的刻度,然后用ArrayRectangular方法来创建这个刻度的阵列,再用AddLine画轴。完成后或组合起来或做成块,保证一次性选择到。


        问题7:句柄是一成不变的图元的唯一而不重复的标识,就象你的身份证号一样。<BR>词典和扩展数据都是用于保存非可见的数据,对于二次开发时保存图元的相关信息是有用的。


问题8:必须用到VLAX方法的曲线方法。

bzjustb 发表于 2004-2-10 20:05:00

谢谢老大!!!


听君一句话,胜看十天书!!!

bzjustb 发表于 2004-2-10 21:31:00

老大,能帮忙写一个做剖切线的程序吗?
页: [1]
查看完整版本: [求助]有几个问题请各位指点一下,麻烦大家进来看看........(焦急中....)