明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: sjsfsdrgy

剖面线问题

  [复制链接]
发表于 2004-5-18 15:58:00 | 显示全部楼层
此图是我刚才传上去的.请问如何使用 "须保证填充边界的封闭,相交不行,可以用SendCommand发送-boundary命令求填充边界或直接调用-Hactch命令按点填充" 填充左视图中几条弧和周围所封闭的地方
 楼主| 发表于 2004-5-18 21:27:00 | 显示全部楼层
各位高手,我是初学者,你们发表的思路很难看懂,希望大家高抬贵手帮助我写个程序:),解决剖面线的问题。我的毕业设计只剩下这个问题不会,谢谢各位!!!
发表于 2004-5-18 22:37:00 | 显示全部楼层
  1. Sub Test()
  2.        Dim pMax As Variant
  3.        Dim pnt(2) As Double, dot(2) As Double
  4.        Dim pBlock As AcadBlock, pObj As AcadBlockReference, pEntity(0) As AcadEntity
  5.        Dim pOut(0) As AcadEntity, pHatch As AcadHatch
  6.        Dim pLine As AcadLine
  7.        Set pBlock = ThisDrawing.Blocks.Add(pnt, "*U")
  8.        Dim p1(2) As Double, p2(2) As Double, p3(2) As Double
  9.        p2(0) = 10: p3(1) = 10
  10.        Set pLine = ThisDrawing.ModelSpace.AddLine(p1, p2)
  11.        Application.ZoomExtents
  12.        Application.ZoomPrevious
  13.        pLine.Delete
  14.        pMax = ThisDrawing.GetVariable("EXTMAX")
  15.        pMax(0) = pMax(0) + 2
  16.        pMax(1) = pMax(1) + 2
  17.        pBlock.AddLine p1, p2
  18.        pBlock.AddLine p1, p3
  19.        pBlock.AddLine p2, p3
  20.        pBlock.AddCircle p1, 1
  21.        dot(0) = pMax(0): dot(1) = pMax(1)
  22.        Set pObj = ThisDrawing.ModelSpace.InsertBlock(pMax, pBlock.Name, 1, 1, 1, 0)
  23.        Application.ZoomExtents
  24.        pMax(0) = pMax(0) + 2
  25.        pMax(1) = pMax(1) + 2
  26.        ThisDrawing.SendCommand "-Boundary" & vbCr & pMax(0) & "," & pMax(1) & vbCr & vbCr
  27.        Set pEntity(0) = ThisDrawing.ModelSpace(ThisDrawing.ModelSpace.Count - 1)
  28.        ThisDrawing.CopyObjects pEntity, pBlock
  29.        Set pOut(0) = pBlock(pBlock.Count - 1)
  30.        pOut(0).Move dot, p1
  31.        pEntity(0).Delete
  32.        pObj.Delete
  33.        Application.ZoomPrevious
  34.        Set pHatch = pBlock.AddHatch(0, "Ansi31", True)
  35.        pHatch.AppendOuterLoop (pOut)
  36.        pHatch.Evaluate
  37.        pOut(0).Delete
  38.        Set pObj = ThisDrawing.ModelSpace.InsertBlock(ThisDrawing.Utility.GetPoint, pBlock.Name, 1, 1, 1, 0)
  39. End Sub
发表于 2004-5-19 09:29:00 | 显示全部楼层
"EXTMAX"是和何变量
发表于 2004-5-19 09:31:00 | 显示全部楼层
yingxunxue发表于2004-5-19 9:29:00\"EXTMAX\"是和何变量
把我给的两个链接看完
发表于 2004-5-19 11:21:00 | 显示全部楼层
谢谢老兄,还有很多的问题要你们帮忙,因为我在用VB(VBA)开发一个CAD系统,很多方面如果有技巧的话,希望提供帮助,.


如果我先画了若干条线段(包括圆弧) ,而且又是动态的组成(封闭)的,请问我用什么方法填充-----------我现在的做法是去捕捉各个端点(我不是用AddLightWeightPolyline画的),重新用AddLightWeightPolyline画一圈,再填充.请问合理吗?


图中绿色线围成的封闭区域,特别上俩条弧围成的封闭区域

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2004-5-19 12:40:00 | 显示全部楼层
谢谢"雪山飞狐",你的程序很重要,我会认真的从零开始学习,以后程序中不懂的地方还请多多帮忙解释:),还有个问题:


我定义线形时,不知道为什么出错,是不是路径的问题?我把AUTOCAD2002装C盘Program Files文件,,在程序中写C:\Program Files\AutoCAD2002\support\acad.lin.


还有其他出错的可能吗?
发表于 2004-5-19 13:05:00 | 显示全部楼层
程序思路:


1/在求边界之前做块的试插入,关键要判断插入点没有其他图元与试插入的块参照干涉,(可以考虑将其他层锁定)


2/按-Boundary命令求边界时必须保证边界在Zoom内,即看得见


3/边界是ModelSpace最后一个实体,用CopyObjects复制到块内


4/在块内按边界填充
 楼主| 发表于 2004-5-19 13:06:00 | 显示全部楼层
如果两部分剖面线的方向不同,该怎样处理?






Sendcommand和Boundary属于那一部分,可以在哪个课本中找到,我要学习.
发表于 2004-5-19 13:15:00 | 显示全部楼层
sjsfsdrgy发表于2004-5-19 13:06:00如果两部分剖面线的方向不同,该怎样处理? Sendcommand和Boundary属于那一部分,可以在哪个课本中找到,我要学习.

两部分剖面线的方向,生成两个HatchObject
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-2 09:17 , Processed in 0.187290 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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