明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1080|回复: 9

[讨论] 利用块组织数据进行三维建模的思路

[复制链接]
发表于 2015-8-27 09:49 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 etoxp 于 2015-11-13 20:12 编辑

1.每一个块中有截面图元、路径图元、文字标记对象(用来记录生成实体的方法(譬如sweep、loft等)、生成的实体名、布尔操作对象等),分别放在3d_sect*、3d_path*、3d_text*系列图层中。将这些块统一放到一个图层中,以便识别。
2.块分两种,一种是基本块,用来生成“基本实体basicSolid”,可能需要进行布尔编辑,但最后会被保留下来;另一种是辅助块,生成“辅助实体addidSolid”,用来对基本实体进行布尔“减”编辑用,编辑完后消失。
3.运用块组织数据结构的好处:
(1)通过修改块内的二维图元(sect与path)就可以间接实现对三维实体的修改(实际上是重新生成一遍三维实体);将二维图纸稍加编辑就可以用来生成三维模型;如果建立的三维模型比较精确,则可以反过来直接生成二维平、立、剖及轴视图(主要用到slice、flatshot命令)。
(2)因为被包容在块内,sect与path对象被很好地对应起来(对于某个块而言,可以只有一个sect与一个path,也可以“一对多”或“多对一”),块可以复制,且其能继承原块的作用。譬如要对一个水池的一面墙上开很多相同大小的孔,这时只要先做好一个开洞块,然后复制到不同位置即可;也可以通过在一个块中放一个sect与多个path实现相同的效果。
(3)三维建模过程中用到的sect、path以及逻辑关系能被很好地保存下来,图纸关闭后不受影响。且各个块可以在图纸内部与图纸之间随意复制,使成果容易复用、继承与积累。
(4)表面上模型中看不见什么参数,却实现了“参数化”——或许只能叫“半参数化”。



程序流程:
1.遍历所有在"3d_block"图层上的块,提取块中信息(块名;欲生成的实体的名称;生成实体的方式;识别是基本块还是辅助块,如果是辅助块,记录下布尔操作方式及对象),存在列表blockLst中。
要点:(setq blockLst (list
                                     (cons 块名1 (list
                                                           (cons "BasicSolidName"  xxx)
                                                           (cons  "EntmakeMethod"   "SWEEP" ) ;如果块中没有此信息,则默认为"SWEEP"
                                                            ...............
                                                       )
                                    (cons 块名2 (list
                                                           (cons "AddidSolidName"  xxx);AddidSolid一般不需要命名
                                                           (cons  "EntmakeMethod"   "SWEEP" ) ;如果块中没有此信息,则默认为"SWEEP"
                                                            ...............
                                                       )
                                      )
                                )
           )
用(cons xx  yy)的组织方式便于后面用(cdr(assoc xx blockLst ))进行索引,下面的basicSolidLst与addidSolidLst同样可用这种组织方式。


2.遍历blockLst生成所有实体,并记录下实体名称及对应的块名,分别存放在basicSolidLst与addidSolidLst中。
要点:将块中的sect与path图元原位复制到块外,然后用sweep或loft等生成实体。


3.遍历addidSolidLst,对对应的basicSolid进行布尔操作(一般只要用到布尔减)。


4.最后手动对所有的basicSolid进行union.










本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
zctao1966 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-8-27 09:55 | 显示全部楼层
手机码字不易啊 , 实现起来更不易
发表于 2015-8-27 21:06 | 显示全部楼层
关注此贴    希望能成功的进行三维建模
发表于 2015-8-27 21:57 | 显示全部楼层
防su程序(亲亲)
 楼主| 发表于 2015-8-27 22:47 | 显示全部楼层
qyming 发表于 2015-8-27 21:57
防su程序(亲亲)

???没看懂,请明示
发表于 2015-8-27 23:07 | 显示全部楼层
好思路,关注楼主的成果
发表于 2015-8-27 23:23 | 显示全部楼层
思路很不错,也值得研究,期待。。。
发表于 2015-8-28 10:03 | 显示全部楼层
楼主精神可嘉, 还是要给你加油
发表于 2015-11-14 15:56 | 显示全部楼层
楼主好人,非常感谢
发表于 2015-11-15 19:15 | 显示全部楼层
想法还是不错的,就是设计上稍微搞得太复杂了,其实每个标准图块里定义几种实体组就行了:主体轮廓及其路径,连接体轮廓及其路径,减除体轮廓及其路径。可以使用扩展数据、字段或者ldata方式把他们简单的分类及关联。从用户使用角度,可以设计一个对话框来辅助提示用户选取并处理相应分类的实体。
然后设计一个标准的图块解析生成三维实体函数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 08:37 , Processed in 0.347507 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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