乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 53|回复: 10

[编程交流] 图案填充角度未得到选择

[复制链接]

56

主题

256

帖子

230

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2022-7-5 14:35:03 | 显示全部楼层 |阅读模式
大家好,
 
这是一个Lisp程序的问题。
 
除了舱口角度正常外,一切正常。
 
直到我通过-hatchedit命令运行它,它才起作用。
 
这是UCS问题吗?
 
图纸:
图案填充旋转选择问题。图纸
 
 
Lisp程序:
  1. (defun c:QSHLPASCB nil (c:QSHATCH_SAME_Layer_PatName_Rotation_PatScale_Color&BkgColor))
  2. (defun c:QSHATCH_SAME_Layer_PatName_Rotation_PatScale_Color&BkgColor (/
  3. bkgcol
  4. ent_1
  5. laycolor
  6. layer
  7. nss
  8. patangle
  9. patname
  10. patscale
  11. ss_1
  12. ssdata
  13. )
  14. (while
  15. (not
  16.         (and
  17.                 (setq
  18.                         ent_1 (car (entsel "\nSelect Hatch to get same Hatch entities as:\n\n- LAYER\n- PATTERN NAME\n- PATTERN ANGLE\n- PATTERN SCALE\n- COLOUR\n- BACKGROUND COLOUR\n-------------------------------------------------------------"))
  19.                         ssdata (if ent_1 (entget ent_1))
  20.                         )
  21.                 (= (cdr (assoc 0 ssdata)) "HATCH")
  22.                 (sssetfirst nil)
  23.                 (setq ss_1 (vlax-ename->vla-object ent_1))
  24.                 (progn
  25.                         (setq
  26.                                 bkgcol (vla-get-backgroundcolor ss_1)
  27.                                 bkgcol (vla-get-ColorIndex (vla-get-BackgroundColor ss_1))
  28.                                 laycolor (vla-get-color ss_1)
  29.                                 layer (vla-get-Layer ss_1)
  30.                                 patname (vla-get-PatternName ss_1)
  31.                                 patangle (vla-get-PatternAngle ss_1)
  32.                                 patscale (vla-get-PatternScale ss_1)
  33.                                 ss_1 (ssget "X"
  34.                                         (vl-remove 'nil
  35.                                                 (list        (cons 8 layer)
  36.                                                         '(0 . "HATCH")
  37.                                                         (cons 2 patname)
  38.                                                         (cons 52 patangle)
  39.                                                         (cons 62 laycolor)
  40.                                                         (cons 410 (getvar 'ctab))
  41.                                                         (if (/= "SOLID" patname)
  42.                                                                 (cons 41 patscale)
  43.                                                                 )
  44.                                                         )
  45.                                                 )
  46.                                         )
  47.                                 nss (ssadd)
  48.                                 )
  49.                         (repeat (setq i (sslength ss_1))
  50.                                 (and
  51.                                         (setq e (ssname ss_1 (setq i (1- i))))
  52.                                         (= bkgcol (vla-get-ColorIndex (vla-get-BackgroundColor (vlax-ename->vla-object e))))
  53.                                         (ssadd e nss)
  54.                                         )
  55.                                 )
  56.                         (princ (strcat "\n: ------------------------------\n   <<<   "(itoa (sslength ss_1)) (if (> (sslength ss_1) 1) "   >>>   similar HATCHES" "   >>>   similar HATCH") " selected.\n: ------------------------------\n"))
  57.                         (sssetfirst nil nss)
  58.                         )
  59.                 )
  60.         )
  61. )
  62. (princ)
  63. )
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 14:41:28 | 显示全部楼层
问题似乎与相关图案填充的负(非典型)gc 52值有关。图案填充的副本将具有正gc 52值。并且可能_-HatchEdit也会更正该值。
 
解决此问题的一种方法:
替换:
  1. (cons 52 patangle)

使用:
  1. '(-4 . "<OR") (cons 52 patangle) (cons 52 ((if (minusp patangle) + -) patangle pi pi)) '(-4 . "OR>")
回复

使用道具 举报

56

主题

256

帖子

230

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2022-7-5 14:50:50 | 显示全部楼层
不幸的是,它仍然不起作用。
 
我附上了一张新的图纸,显示了一个新的问题。我不明白为什么这两方面都失败了。
 
图案填充旋转选择问题dwg2。图纸
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 14:57:29 | 显示全部楼层
第二个问题显然与第一个问题有关。gc 52值同样不典型:7.06858(大于2pi)。
我看到的唯一解决方案是删除ssget过滤器的这一部分,并在应用此类函数后比较gc 52值:
  1. ; Change an angle to fit in the range: 0 <= angle < 2pi.
  2. ; (KGA_Math_LimitAngleRange 8.3) => 2.01681
  3. (defun KGA_Math_LimitAngleRange (ang)
  4. (rem (+ (rem ang (+ pi pi)) pi pi) (+ pi pi))
  5. )
  1. (equal (KGA_Math_LimitAngleRange ang1) (KGA_Math_LimitAngleRange ang2) 1e-
回复

使用道具 举报

56

主题

256

帖子

230

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2022-7-5 15:01:27 | 显示全部楼层
谢谢
 
它确实有效。但在某些方面失败了。
 
我已经换了。
  1. (cons 52 patangle)

 
具有
  1. (cons 52 (KGA_Math_LimitAngleRange patangle))

 
也许这不是正确的使用方法?
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 15:08:21 | 显示全部楼层
我的意思是:
创建一个选择集,不过滤gc 52值。
在(repeat(setq i(sslength ss_1))…)循环还使用带有模糊的(equal)函数检查gc 52。
回复

使用道具 举报

56

主题

256

帖子

230

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2022-7-5 15:16:41 | 显示全部楼层
 
我不能让它工作,因为我认为问题是舱口的角度读数不正确。
 
问题图案填充在属性中读取180度。所以我运行了一个脚本来获取它的道具。gc 52值读取-1.5708。
我点击了图案填充,按原样180度输入属性对话框。gc 52值现在为4.71239。
 
我想知道这是怎么翻译的。
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 15:19:38 | 显示全部楼层
我不知道你现在指的是哪个图案填充哪个图纸。但值得检查dwg的ANGBASE设置。
回复

使用道具 举报

56

主题

256

帖子

230

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2022-7-5 15:26:17 | 显示全部楼层
我遇到问题的任何舱口。
 
我试图运行hatchedit的对话框,并使用LeeMac的按键功能按我的L高亮显示OK btn,然后回车关闭UI并修复图案填充角度,因为(命令“_u.hatchedit”“”“”)技巧不起作用,但UI方法起作用。
 
Yep,ANGBASE设置为“0”。
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 15:34:57 | 显示全部楼层
也许这有助于:
  1. (defun KGA_Conv_Pickset_To_ObjectList (ss / i ret)
  2. (if ss
  3.    (repeat (setq i (sslength ss))
  4.      (setq ret (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) ret))
  5.    )
  6. )
  7. )
  8. (defun KGA_Math_LimitAngleRange (ang)
  9. (rem (+ (rem ang (+ pi pi)) pi pi) (+ pi pi))
  10. )
  11. ; (ResetHatchPatAngle (ssget '((0 . "HATCH"))))
  12. ; Argument: ss - Selection [pickset]. Selection should contain hatch objects.
  13. ; Return:   Number of changed objects [int].
  14. (defun ResetHatchPatAngle (ss / ang)
  15. (apply
  16.    '+
  17.    (mapcar
  18.      '(lambda (obj / ang)
  19.        (if
  20.          (and
  21.            (vlax-property-available-p obj 'patternangle)
  22.            (or
  23.              (< (setq ang (vla-get-patternangle obj)) 0.0)
  24.              (>= ang (+ pi pi))
  25.            )
  26.          )
  27.          (progn
  28.            (vla-put-patternangle obj (KGA_Math_LimitAngleRange ang))
  29.            1
  30.          )
  31.          0
  32.        )
  33.      )
  34.      (KGA_Conv_Pickset_To_ObjectList ss)
  35.    )
  36. )
  37. )
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 23:24 , Processed in 1.792030 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表