|
首先感谢乐筑天下及各位网友!
我刚接触 vba ,在做一个工程辅助设计的课题,拜读了站长及斑竹的大作(《精彩实例》),比着葫芦画瓢解决了许多实际问题,
尽管我在数据结构、程序设计方面也不是很精通,还是给了我很大信心,感谢!
由于时间紧迫,碰到一些问题来不及自己仔细琢磨,请教大家指点迷津,少走点弯路,先行谢过各位!
[U]问题1、[/U]一组给出高程值的等高线(polyline,lwpolyline)如何生成一个剖切平面,以求该平面与该组等高线的交点?
怎样生成象xline那样的一个无限伸长的平面并且可以得到与polyline,lwpolyline相交的点图元?我试过addsolid ,add3dsolid,add3dface...
好象都不行呀。我的做法是建立选集把所有等高线的高程值设为0#,得到一系列点,然后以各点做垂直与xy平面的ray或xline,再与恢复高程值的
polyline,lwpolyline求交点,大家有更好的方法么?
[U]问题2、[/U]请参阅以下代码: ’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
[U]我的问题是:[/U]a,跳出循环后我如何取得程序中获得的所有的交点?(一般我能得到六、七十个交点,可是只能访问最后一个点,请大家帮我修改一下循环内部或其他处的程序)
b,用什么方法复制这些点,并“粘贴”到另外一个dwg 图形中?copyobjects方法?还是用选集?还是建立组,用appenditems方法?还是建立块,用addpoint方法?哪个更合理?
[U]问题3、[/U]已知一系列点,如何根据他们及其他一些约束用插值、拟合的方法生成一定长度的一系列线段?大家有没有autocad vba相关的算法,程序代码提供一下?
[U]问题4、[/U]用vba的程序代码怎样实现:新建一图形,在其上建立x、y坐标轴,并在坐标轴上标注类似刻度的尺度标注,是不是用addleader方法?
[U]问题5、[/U]俯视图,左视图,西南等轴观测图等三维视图的viewport坐标值分别是多少?
[U]问题6、[/U]我想建立access数据库与autocad连接,用datagrid、MHFlexgrid等控件显示数据,adodc控件控制,能否实现?
[U]问题7、[/U]哪位顺便通俗地解释一下句柄,字典(dictionary),扩展数据xdata都是干什么用的?
[U]问题8、[/U]在一曲线上(polyline,lwpolyline,spline)如何做任意一点的垂线,切线?
大家若有相关代码提供,不胜感激!谨领大家高见!
[glow=255,red,2]文字[/glow] |
|