另类"继承填充”,改变你的填充传统
本帖最后由 尘缘一生 于 2016-4-14 07:31 编辑1:对于继承填充,第一步:选择继承的图案,取得它的1:图案名 2:图案比例 3:图案角度 即可,至于其它的,纯粹无多大意义。
2:取得后,下一步就是:点选、围选画出它来。
3: 问题是,围曲不闭合是常事,经常出错。哪么我写了个代码,不管围区它存不存在,有没有,只要你鼠标逐点点取下想填充的范围各角点 即可完成了。
本站参考帖子:
http://bbs.mjtd.com/thread-168991-1-1.html;;---------继承填充------------------------------------------------------------
(defun c:jctc (/ a pt0 pt1 lis lis1 ent tcm tcb tcj)
(setvar "OSMODE" 4327) ;;;f3打开
(vl-load-com)
(princ "继承填充")
(setq ent (entsel "\n选择点选一个填充图案<退出>:"))
(setq tcm (cdr (assoc 2 (entget (car ent)))));获取填充图案的名称
(setq tcb (cdr (assoc 41 (entget (car ent)))));获取填充图案的比例
(setq tcj (cdr (assoc 52 (entget (car ent)))));获取填充图案的角度(这个值是以弧度返回的)
(setq tcj (/ (* 180 tcj) pi)) ;图案弧度转换成角度
(setq pt1 (getpoint "\n请给出围区第一点:?"))
(setq lis (list pt1))
(setq pt0 pt1)
(while (/= pt1 nil)
(setq pt1 (getpoint pt1 "\n请逐点给出围区下面各点:?"))
(setq lis (append
lis
(list pt1)
)
)
)
(setq lis1 (list "_.PLINE" pt0 "W" 0 0))
(setq lis (append
lis1
lis
)
)
(foreach n lis
(command n)
)
(setq a (entlast))
(command "HATCH" tcm tcb tcj a "")
(entdel a)
)
非常感谢楼主的努力,看了各位的发言,特别尝试了下,对于不闭合的情况下,使用自动的hatch命令,选择区域后,得到的填充效果与楼主程序的效果完全一致。而对于此等情况,楼主的程序需要多次选点点击,hatch命令选择外框(不闭合)一次就可以了。
或许表达得不对,请楼主审视哈 补充发现,不闭合的情况,填充的覆盖面积,和选择的填充样式有关。 100 字节的代码, 额,感觉被骗了 没有介绍 没有演示没有说明的东西 都是~~~~哈哈我不上当 就是,至少也得有个说明吧,一下来就要币才能看,做人太不厚道了。好东西也得吆喝啊! 这是 什么 鬼,多的话都不想说了 同意楼上的意见 不会录屏,我再说一遍,大家要是试过明白,大家要的就是这个。
选择图中已存在得填充图案,下一步,就是描画你目标填充的边,1:若边界存在,你一一点转点, 2:若不存在,你随便画个,最后也不需要你闭合,程序自动。
尘缘一生 发表于 2016-4-10 17:20 static/image/common/back.gif
不会录屏,我再说一遍,大家要是试过明白,大家要的就是这个。
现在不太画图了,也就不看你的程序了,不过看你的描述,就是hatch命令自带的“继承”特性功能,在很早版本的cad就有了。 还自己觉得稀奇,cad本身就有,想写就是填充+特性匹配几句搞定。若果讨币,就明说求赏得了。 本帖最后由 tryhi 于 2016-4-11 13:31 编辑
看楼主的发言好像是楼主写了个自认为不错的程序,应该是有了进步,购买一下表示鼓励,瞄了一眼发表几句评价
第一:需要一个点一个点的把填充区域点出来,而且点错一个还得重头来过,假如我要填充的图形有几百个节点,估计想一次性全部正确点到是不可能的了,用户体验太差
第二:楼主修改了捕捉设置结束后却不改回原来设置
第三:楼主取得刚刚一个一个点出来的所有点之后,调用了PLINE命令,却没有对捕捉进行处理,很容易跑偏
第四:如果我的填充区域带有弧线,请问怎么点出那条弧线?
第五:其实就是hatch命令自带的“继承”特性功能,就一句command "HATCH",说实话,其他代码真的可有可无,甚至比你的代码还好,因为自带的支持弧线