明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1691|回复: 4

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

[复制链接]
发表于 2004-2-5 16:03:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2004-2-6 15:11:22 编辑

首先感谢明经通道及各位网友!
我刚接触AutoCAD 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]
 楼主| 发表于 2004-2-6 15:23:00 | 显示全部楼层
[U]再问:[/U]记得以前用vb做数据库设计,用一个adodc控件联接数据库,用datagrid或msflexgrid控件显示数据库字段内容(感知),只要把datagrid的datasource属性值设为adodc就可以啦,我在autocad vba中,在datagrid属性框中找不到datasource属性,用代码编写提示方法不可用,为什么?
发表于 2004-2-6 18:20:00 | 显示全部楼层
问题2:内容循环时可以使用动态数组来保存你生成的交点,也就是使用
Dim IntPnt() as Variant
ReDim IntPnt(0)
然后在程序中每增加一个点则使用
ReDim Preserve IntPnt(UBound(IntPnt)+1)
来增加数组的元素数量。 因为你说的点只是数值,而不是实际存在的对象,你可以通过临时的文本文件来保存并在其它图形中打开使用,如果你是在同一过程中使用,则可以直接使用这些变量的值。 问题3:点已经有了,就可以使用
AddLightweightPolyline 从顶点列表创建优化多段线的方法来创建线,并按照你的要求进行拟合等操作。 问题4:你可以通过AddLine画出一个单位的刻度,然后用ArrayRectangular方法来创建这个刻度的阵列,再用AddLine画轴。完成后或组合起来或做成块,保证一次性选择到。 问题7:句柄是一成不变的图元的唯一而不重复的标识,就象你的身份证号一样。
词典和扩展数据都是用于保存非可见的数据,对于二次开发时保存图元的相关信息是有用的。 问题8:必须用到VLAX方法的曲线方法。
 楼主| 发表于 2004-2-10 20:05:00 | 显示全部楼层
谢谢老大!!!


听君一句话,胜看十天书!!!
 楼主| 发表于 2004-2-10 21:31:00 | 显示全部楼层
老大,能帮忙写一个做剖切线的程序吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 09:21 , Processed in 0.148806 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表