[求助]有几个问题请各位指点一下,麻烦大家进来看看........(焦急中....)
首先感谢乐筑天下及各位网友!我刚接触 vba ,在做一个工程辅助设计的课题,拜读了站长及斑竹的大作(《精彩实例》),比着葫芦画瓢解决了许多实际问题,
尽管我在数据结构、程序设计方面也不是很精通,还是给了我很大信心,感谢!
由于时间紧迫,碰到一些问题来不及自己仔细琢磨,请教大家指点迷津,少走点弯路,先行谢过各位!
问题1、一组给出高程值的等高线(polyline,lwpolyline)如何生成一个剖切平面,以求该平面与该组等高线的交点?
怎样生成象xline那样的一个无限伸长的平面并且可以得到与polyline,lwpolyline相交的点图元?我试过addsolid ,add3dsolid,add3dface...
好象都不行呀。我的做法是建立选集把所有等高线的高程值设为0#,得到一系列点,然后以各点做垂直与xy平面的ray或xline,再与恢复高程值的
polyline,lwpolyline求交点,大家有更好的方法么?
问题2、请参阅以下代码: ’dgxselectionset是一个选集用来选取作为分析对象的等高线
’dgxselect 是选集中的各条等高线
’pmzkd 是各条等高线与一个生成的直线的交点阵列
While count1 > 0
‘选取等高线选集中的各条等高线
Set dgxselect = dgxselectionset.Item(count1 - 1)
Dim pmxkzd As Variant
’求得各条等高线与 pqx的交点
pmxkzd = dgxselect.IntersectWith(pqx, acExtendNone)
Dim w As Integer
Dim y As Integer
Dim str As String
y = 0
If VarType(pmxkzd)vbEmpty Then
For w = LBound(pmxkzd) To UBound(pmxkzd)
str = "交点[" & z & "]的坐标为:" & pmxkzd(y) & "," & pmxkzd(y + 1) & "," & pmxkzd(y + 2)
Dim pqpt() As AcadPoint
Dim pmxpt(2) As Double
pmxpt(0) = pmxkzd(y)
pmxpt(1) = pmxkzd(y + 1)
pmxpt(2) = pmxkzd(y + 2)
ReDim pqpt(z)
‘生成数组存储交点
Set pqpt(z) = ThisDrawing.ModelSpace.AddPoint(pmxpt)
pqpt(z).Color = acWhite
pqpt(z).Update
MsgBox str
y = y + 3
w = w + 2
z = z + 1
Next
End If
dgxselect.Color = acBlue
count1 = count1 - 1
Wend
dgxselectionset.Delete
我的问题是:a,跳出循环后我如何取得程序中获得的所有的交点?(一般我能得到六、七十个交点,可是只能访问最后一个点,请大家帮我修改一下循环内部或其他处的程序)
b,用什么方法复制这些点,并“粘贴”到另外一个dwg 图形中?copyobjects方法?还是用选集?还是建立组,用appenditems方法?还是建立块,用addpoint方法?哪个更合理?
问题3、已知一系列点,如何根据他们及其他一些约束用插值、拟合的方法生成一定长度的一系列线段?大家有没有autocad vba相关的算法,程序代码提供一下?
问题4、用vba的程序代码怎样实现:新建一图形,在其上建立x、y坐标轴,并在坐标轴上标注类似刻度的尺度标注,是不是用addleader方法?
问题5、俯视图,左视图,西南等轴观测图等三维视图的viewport坐标值分别是多少?
问题6、我想建立access数据库与autocad连接,用datagrid、MHFlexgrid等控件显示数据,adodc控件控制,能否实现?
问题7、哪位顺便通俗地解释一下句柄,字典(dictionary),扩展数据xdata都是干什么用的?
问题8、在一曲线上(polyline,lwpolyline,spline)如何做任意一点的垂线,切线?
大家若有相关代码提供,不胜感激!谨领大家高见!
文字 再问:记得以前用vb做数据库设计,用一个adodc控件联接数据库,用datagrid或msflexgrid控件显示数据库字段内容(感知),只要把datagrid的datasource属性值设为adodc就可以啦,我在autocad vba中,在datagrid属性框中找不到datasource属性,用代码编写提示方法不可用,为什么? 问题2:内容循环时可以使用动态数组来保存你生成的交点,也就是使用
Dim IntPnt() as Variant
ReDim IntPnt(0)
然后在程序中每增加一个点则使用
ReDim Preserve IntPnt(UBound(IntPnt)+1)
来增加数组的元素数量。
因为你说的点只是数值,而不是实际存在的对象,你可以通过临时的文本文件来保存并在其它图形中打开使用,如果你是在同一过程中使用,则可以直接使用这些变量的值。
问题3:点已经有了,就可以使用
AddLightweightPolyline 从顶点列表创建优化多段线的方法来创建线,并按照你的要求进行拟合等操作。
问题4:你可以通过AddLine画出一个单位的刻度,然后用ArrayRectangular方法来创建这个刻度的阵列,再用AddLine画轴。完成后或组合起来或做成块,保证一次性选择到。
问题7:句柄是一成不变的图元的唯一而不重复的标识,就象你的身份证号一样。
词典和扩展数据都是用于保存非可见的数据,对于二次开发时保存图元的相关信息是有用的。
问题8:必须用到VLAX方法的曲线方法。 谢谢老大!!!
听君一句话,胜看十天书!!! 老大,能帮忙写一个做剖切线的程序吗?
页:
[1]