明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8486|回复: 16

图案填充的比例修改了,但图的显示并未修改

  [复制链接]
发表于 2011-2-18 23:46 | 显示全部楼层 |阅读模式
各位前辈:
小弟又有一问题来烦扰大家了,
首先感谢 G版 在“如何使 选择集中的图元 被选中[已结]”一贴中对我的帮助
鼓捣了大半天也没搞定,结果G版一句话就搞定了,这差距净如此之大,呜呜~
问题如下:

41

填充图案比例或间距(仅限图案填充)

图案填充的比例按如下程序修改  组码41后
(defun C:gg ()
(setq bili (getreal "\n输入比例:"))
;;;(setq ss (ssget "X" (list'(2 . "ANSI31")  '(0 . "HATCH") '(8 . "地块位置示意") )))
(setq ss (ssget "X" (list'(2 . "ANSI31")  '(0 . "HATCH")  )))
;;;(sssetfirst nil ss)
(setq n 0) ;序号的初值设为0
(repeat (sslength ss);重复执行ss的长度的次数,即对象的个数
(setq name (ssname ss n));得到选择集内第n个对象的图元名
(setq ent (entget name));得到该对象的图元表
  (if (assoc 41 ent)
      (setq ent (subst(cons 41 bili) (assoc 41 ent) ent))
      (setq ent (append 41 (list(cons 41 bili))))
    )
      (entmod ent)(entmod ent)
;;;     (redraw name 4)
(setq n(1+ n));序号n的数量加1
)
(prin1)
)

图案填充的比例修改了,但图的显示并未修改



对比了两种不同形式的组码,不觉得有什么可疑的地方

命令: (entget(car(entsel)))
选择对象: ((-1 . <图元名: 7ef731e0>) (0 . "HATCH") (330 . <图元名: 7ef70cf8>)
(5 . "104") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "地块位置示意")
(100 . "AcDbHatch") (10 0.0 0.0 0.0) (210 0.0 0.0 1.0) (2 . "ANSI31") (70 . 0)
(71 . 0) (91 . 1) (92 . 1) (93 . 4) (72 . 1) (10 32168.7 -8256.93 0.0) (11
34864.7 -8256.93 0.0) (72 . 1) (10 34864.7 -8256.93 0.0) (11 34864.7 -10399.5
0.0) (72 . 1) (10 34864.7 -10399.5 0.0) (11 32168.7 -10399.5 0.0) (72 . 1) (10
32168.7 -10399.5 0.0) (11 32168.7 -8256.93 0.0) (97 . 0) (75 . 0) (76 . 1) (52
. 0.0) (41 . 33.0) (77 . 0) (78 . 1) (53 . 0.785398) (43 . 7676.64) (44 .
-4103.84) (45 . -112.253) (46 . 112.253) (79 . 0) (98 . 1) (10 24182.9 -10121.2
0.0))
命令: (entget(car(entsel)))
选择对象: ((-1 . <图元名: 7ef731e8>) (0 . "HATCH") (330 . <图元名: 7ef70cf8>)
(5 . "105") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "地块位置示意")
(100 . "AcDbHatch") (10 0.0 0.0 0.0) (210 0.0 0.0 1.0) (2 . "ANSI31") (70 . 0)
(71 . 0) (91 . 1) (92 . 1) (93 . 4) (72 . 1) (10 29293.7 -5622.81 0.0) (11
31989.8 -5622.81 0.0) (72 . 1) (10 31989.8 -5622.81 0.0) (11 31989.8 -7765.36
0.0) (72 . 1) (10 31989.8 -7765.36 0.0) (11 29293.7 -7765.36 0.0) (72 . 1) (10
29293.7 -7765.36 0.0) (11 29293.7 -5622.81 0.0) (97 . 0) (75 . 0) (76 . 1) (52
. 0.0) (41 . 33.0) (77 . 0) (78 . 1) (53 . 0.785398) (43 . 7676.64) (44 .
-4103.84) (45 . -449.013) (46 . 449.013) (79 . 0) (98 . 1) (10 21307.9 -7487.08
0.0))

但是双击填充,进入图案填充编辑器,再点击“确定”按钮 填充就会刷新,也不知道问什么
执行命令“U”可以倒退回到 比例修改了但是显示不正确的状态,

也不知道是还有需要修改的组码,还是需要执行什么操作来刷新什么的
恳请各位前辈不吝赐教,谢过~





本帖子中包含更多资源

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

x
发表于 2019-4-14 16:30 | 显示全部楼层
这个问题是啥原因?我也遇到同样问题
  1. (defun DCL_TC ()
  2. (setq sst(entget(car(entsel))))
  3. (setq BL1 (cdr(assoc 41 sst)))
  4. (vl-file-delete(strcat (getvar "TEMPPREFIX") "TMP_BL.DCL"))
  5. (setq FA2(open (strcat (getvar "TEMPPREFIX") "TMP_BL.DCL") "a"))
  6. (foreach stream '( "TCBLTZ:dialog{\n"
  7.             "label= "填充比例调整:";\n"
  8.                                                 "initial_focus="edit_p";\n"       
  9.             ":edit_box{" "label= "当前填充比例:"; key="YBL"; edit_width=8;}\n"
  10.             ":edit_box{" "label= "新的填充比例:"; key="edit_p"; edit_width=8; allow_accept=true;}\n"
  11.             "ok_cancel;\n"                                               
  12.             "}\n"      
  13.             )
  14. (princ stream FA2))
  15. (close FA2)
  16. (setq DCL_T (LOAD_DIALOG (strcat (getvar "TEMPPREFIX") "TMP_BL.DCL")))
  17. (new_dialog "TCBLTZ" DCL_T)
  18.         (set_tile "YBL" (rtos BL1 2 3))
  19.         (action_tile "accept" "(BLXG) (done_dialog 1)")
  20.         (start_dialog))
  21. (defun BLXG ()
  22. (setq a (atof (get_tile "edit_p")))
  23. (setq sst (subst (cons 41 a) (assoc 41 sst) sst))
  24. (entmod sst))

发表于 2011-2-19 09:39 | 显示全部楼层
回复 zxjing 的帖子

  1. (defun C:gg ()
  2. (setq bili (getreal "\n输入比例:"))
  3. ;;;(setq ss (ssget "X" (list'(2 . "ANSI31")  '(0 . "HATCH") '(8 . "地块位置示意") )))
  4. (setq ss (ssget "X" (list'(2 . "ANSI31")  '(0 . "HATCH")  )))
  5. ;;;(sssetfirst nil ss)
  6. (setq n 0) ;序号的初值设为0
  7. (repeat (sslength ss);重复执行ss的长度的次数,即对象的个数
  8. (setq name (ssname ss n));得到选择集内第n个对象的图元名
  9. (vla-put-PatternScale (vlax-ename->vla-object name) bili)  
  10. ;;;     (redraw name 4)
  11. (setq n(1+ n));序号n的数量加1
  12. )
  13. (prin1)
  14. )
发表于 2011-2-19 21:27 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2011-2-20 20:03 编辑

这样试试:
  1. (defun C:gg ()
  2. (setq bili (getreal "\n输入比例:"))
  3. (setq ss (ssget "X" '((0 . "HATCH") (2 . "ANSI31"))))
  4. (setq n 0) ;序号的初值设为0
  5. (repeat (sslength ss);重复执行ss的长度的次数,即对象的个数
  6.   (setq name (ssname ss n));得到选择集内第n个对象的图元名
  7.   (setq ent (entget name));得到该对象的图元表
  8.   (setq b45 (* (cdr(assoc 45 ent)) (/ bili (cdr(assoc 41 ent)))))
  9.   (setq ent (subst (cons 45 b45) (assoc 45 ent) ent))
  10.   (setq ent (subst (cons 41 bili) (assoc 41 ent) ent))
  11.   (entmod ent)
  12.   (entupd name)
  13.   (setq n(1+ n));序号n的数量加1
  14. )
  15. (prin1)
  16. )
发表于 2011-2-19 21:43 | 显示全部楼层
本帖最后由 gzxl 于 2011-2-19 22:03 编辑

那象cass植被间距如何修改?请高手提供点思路,谢谢!

本帖子中包含更多资源

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

x
 楼主| 发表于 2011-2-19 23:46 | 显示全部楼层
本帖最后由 zxjing 于 2011-2-19 23:46 编辑

回复 Gu_xl 的帖子

谢谢G版,经测试达不到要求的效果,还是不能刷新填充的显示,还请再度赐教,不胜感激~
CAD版本:2004    windows:XP
 楼主| 发表于 2011-2-19 23:57 | 显示全部楼层
回复 ZZXXQQ 的帖子

谢谢热心的Z版,好久不向您请教问题了,哈哈 ~
程序运行后还是不能达到刷新显示的效果,
另外有个问题就是如何获取填充的质心,这个也拖了好久了没有解决,
多段线的质心那个倒是可以提取到,但是填充的就不知道该怎么弄了,
选中填充的时候,CAD会有那个控制点显示,可是如何才能获取到呢
 楼主| 发表于 2011-2-20 00:06 | 显示全部楼层
回复 gzxl 的帖子

你好,我看了你的那个dwg文件,不清楚它那个是怎么弄的,特性面板里提示是块参照,但在一起又像是编组,在对象编组里却又没有编组名,炸开后全部变单线。你说的这个软件我从来没用过,不了解它到底是怎么个运行机制,我感觉上他那个树木还可以统计数量出来,这样的难度,小弟也是刚接触lisp不久,恐怕帮不上忙了就~
发表于 2011-2-20 01:10 | 显示全部楼层
回复 gzxl 的帖子

这其实不是填充!是对象无名编组!要改变填充密度,将改组内填充图块删除,根据边界重新计算插入密度,插入图块后再编无名组
发表于 2011-2-20 01:13 | 显示全部楼层
回复 zxjing 的帖子

在08上我的方法没有问题,ZZXXQQ 的不行。04上未经测试,还不太清楚,我的机器没装04,现在无法测试!
发表于 2011-2-20 07:52 | 显示全部楼层
本帖最后由 gzxl 于 2011-2-20 08:10 编辑

多谢G版和zxjing,G版的在CAD2004上测试可以啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 00:38 , Processed in 0.226937 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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