明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2703|回复: 20

[源码] 另类"继承填充”,改变你的填充传统

[复制链接]
发表于 2016-4-6 18:41 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2016-4-14 07:31 编辑

1:对于继承填充,第一步:选择继承的图案,取得它的1:图案名 2:图案比例 3:图案角度 即可,至于其它的,纯粹无多大意义。
2:取得后,下一步就是:点选、围选画出它来。


3: 问题是,围曲不闭合是常事,经常出错。哪么我写了个代码,不管围区它存不存在,有没有,只要你鼠标逐点点取下想填充的范围各角点 即可完成了。

本站参考帖子:

    http://bbs.mjtd.com/thread-168991-1-1.html
  1. ;;---------继承填充------------------------------------------------------------
  2. (defun c:jctc (/ a pt0 pt1 lis lis1 ent tcm tcb tcj)
  3.   (setvar "OSMODE" 4327) ;;;f3打开
  4.   (vl-load-com)
  5.   (princ "继承填充")
  6.   (setq ent (entsel "\n选择点选一个填充图案<退出>:"))
  7.   (setq tcm (cdr (assoc 2 (entget (car ent)))));获取填充图案的名称
  8.   (setq tcb (cdr (assoc 41 (entget (car ent)))));获取填充图案的比例
  9.   (setq tcj (cdr (assoc 52 (entget (car ent)))));获取填充图案的角度(这个值是以弧度返回的)
  10.   (setq tcj (/ (* 180 tcj) pi)) ;图案弧度转换成角度
  11.   (setq pt1 (getpoint "\n请给出围区第一点:?"))
  12.   (setq lis (list pt1))
  13.   (setq pt0 pt1)
  14.   (while (/= pt1 nil)
  15.     (setq pt1 (getpoint pt1 "\n请逐点给出围区下面各点:?"))
  16.     (setq lis (append
  17.                 lis
  18.                 (list pt1)
  19.               )
  20.     )
  21.   )
  22.   (setq lis1 (list "_.PLINE" pt0 "W" 0 0))
  23.   (setq lis (append
  24.               lis1
  25.               lis
  26.             )
  27.   )
  28.   (foreach n lis
  29.     (command n)
  30.   )
  31.   (setq a (entlast))
  32.   (command "HATCH" tcm tcb tcj a "")
  33.   (entdel a)
  34. )

本帖子中包含更多资源

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

x

点评

发帖是鼓励的,但这里本来就是讨论技术,要付币才能看,完全没有意义。 要论技术水平,本论坛高手大把。 按下面坛友的分析,你代码的实际水平还是很初步的状态,还是在这里好好学习交流吧...  发表于 2016-4-13 09:13
发帖是鼓励的,但这里本来就是讨论技术,要付币才能看,完全没有意义。 要论技术水平,本论坛高手大把。 按下面坛友的分析,你代码的实际水平还是很初步的状态,还是在这里好好学习交流吧...  发表于 2016-4-13 09:12
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2019-4-23 13:23 | 显示全部楼层
非常感谢楼主的努力,看了各位的发言,特别尝试了下,对于不闭合的情况下,使用自动的hatch命令,选择区域后,得到的填充效果与楼主程序的效果完全一致。而对于此等情况,楼主的程序需要多次选点点击,hatch命令选择外框(不闭合)一次就可以了。
或许表达得不对,请楼主审视哈
发表于 2019-4-23 13:26 | 显示全部楼层
补充发现,不闭合的情况,填充的覆盖面积,和选择的填充样式有关。
发表于 2016-4-6 21:10 | 显示全部楼层
100 字节的代码, 额,感觉被骗了[em0]

点评

请仔细试用,就知道,代码些的多,就好吗?  发表于 2016-4-10 17:16
请仔细试用,就知道,代码些的多,就好吗?  发表于 2016-4-10 17:13
发表于 2016-4-7 08:46 | 显示全部楼层
没有介绍 没有演示  没有说明的  东西 都是~~~~哈哈  我不上当

点评

请仔细试用,就知道,代码些的多,就好吗?  发表于 2016-4-10 17:14
发表于 2016-4-7 08:52 | 显示全部楼层
就是,至少也得有个说明吧,一下来就要币才能看,做人太不厚道了。好东西也得吆喝啊!
发表于 2016-4-7 16:47 | 显示全部楼层
这是 什么 鬼,多的话都不想说了
发表于 2016-4-8 17:20 | 显示全部楼层
同意楼上的意见
 楼主| 发表于 2016-4-10 17:20 | 显示全部楼层
不会录屏,我再说一遍,大家要是试过明白,大家要的就是这个。


选择图中已存在得填充图案,下一步,就是描画你目标填充的边,1:若边界存在,你一一点转点, 2:若不存在,你随便画个,最后也不需要你闭合,程序自动。
发表于 2016-4-11 09:11 | 显示全部楼层
尘缘一生 发表于 2016-4-10 17:20
不会录屏,我再说一遍,大家要是试过明白,大家要的就是这个。

现在不太画图了,也就不看你的程序了,不过看你的描述,就是hatch命令自带的“继承”特性功能,在很早版本的cad就有了。
发表于 2016-4-11 13:01 | 显示全部楼层
还自己觉得稀奇,cad本身就有,想写就是填充+特性匹配几句搞定。若果讨币,就明说求赏得了。
发表于 2016-4-11 13:25 | 显示全部楼层
本帖最后由 tryhi 于 2016-4-11 13:31 编辑

看楼主的发言好像是楼主写了个自认为不错的程序,应该是有了进步,购买一下表示鼓励,瞄了一眼发表几句评价
第一:需要一个点一个点的把填充区域点出来,而且点错一个还得重头来过,假如我要填充的图形有几百个节点,估计想一次性全部正确点到是不可能的了,用户体验太差
第二:楼主修改了捕捉设置结束后却不改回原来设置
第三:楼主取得刚刚一个一个点出来的所有点之后,调用了PLINE命令,却没有对捕捉进行处理,很容易跑偏

第四:如果我的填充区域带有弧线,请问怎么点出那条弧线?
第五:其实就是hatch命令自带的“继承”特性功能,就一句command "HATCH",说实话,其他代码真的可有可无,甚至比你的代码还好,因为自带的支持弧线

点评

支持 说到重点了  发表于 2016-4-12 18:54
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 14:41 , Processed in 6.097276 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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