乐筑天下

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

[编程交流] Bhatch,用lisp,请帮忙!

[复制链接]

40

主题

177

帖子

100

银币

后起之秀

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

铜币
248
发表于 2022-7-5 23:07:21 | 显示全部楼层 |阅读模式
大家好,我需要帮助。
使用LISP执行此操作:
000732wcfkvyiyzzcvefkc.png
 
1.指定四个点。
2、在此区域使用“bhatch”。缩放可以是动态的。
3、去掉边框。
 
谢谢你的帮助!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:17:48 | 显示全部楼层
试试这个,让我知道。
 
  1. (defun c:Test (/ p a i sc l 1p e pl h gr)
  2. ;;    Tharwat 10. Apr. 2014         ;;
  3. (if
  4.    (eq
  5.      4
  6.      (logand 4
  7.              (cdr
  8.                (assoc 70 (entget (tblobjname "LAYER" (getvar 'CLAYER))))
  9.              )
  10.      )
  11.    )
  12.     (alert "Current layer is LOCKED ! Unlock and Try again .")
  13.     (if (setq p (getpoint "\n Specify point < 1 > :"))
  14.       (progn
  15.         (setq a  p
  16.               i  1
  17.               sc 1.0
  18.               l  (cons p l)
  19.         )
  20.         (while (/= (length l) 4)
  21.           (setq
  22.             1p (getpoint
  23.                  p
  24.                  (strcat "\n Next point < "
  25.                          (itoa (setq i (1+ i)))
  26.                          " > :"
  27.                  )
  28.                )
  29.           )
  30.           (setq l (cons 1p l)
  31.                 p 1p
  32.           )
  33.         )
  34.         (setq
  35.           e (entmakex
  36.               (append (list '(0 . "LWPOLYLINE")
  37.                             '(100 . "AcDbEntity")
  38.                             '(100 . "AcDbPolyline")
  39.                             '(70 . 1)
  40.                             '(90 . 4)
  41.                            )
  42.                       (mapcar '(lambda (u) (cons 10 u)) (cons a l))
  43.               )
  44.             )
  45.         )
  46.         (setq pl (entlast))
  47.         (command "_.-hatch" "S" e "" "P" "ANSI37" 1.0 0.0 "")
  48.         (setq h (entlast))
  49.         (vla-put-AssociativeHatch
  50.           (setq v (vlax-ename->vla-object h))
  51.           :vlax-false
  52.         )
  53.         (entdel e)
  54.         (princ "\n Type [+,-] to change Pattern Scale :")
  55.         (if (not (eq pl h))
  56.           (while (or (eq (car (setq gr (grread t 13 0))) 5)
  57.                      (member (cadr gr) '(43 61 45))
  58.                  )
  59.             (redraw)
  60.             (if (and (eq (car gr) 2)
  61.                      (member (cadr gr) '(43 61 45))
  62.                 )
  63.               (vla-put-patternscale
  64.                 v
  65.                 (if (eq (cadr gr) 45)
  66.                   (progn
  67.                     (if (<= (setq sc (- sc 0.5)) 0.)
  68.                       (setq sc 0.5)
  69.                       sc
  70.                     )
  71.                   )
  72.                   (setq sc (+ sc 0.5))
  73.                 )
  74.               )
  75.             )
  76.           )
  77.         )
  78.       )
  79.     )
  80. )
  81. (princ)
  82. )(vl-load-com)
回复

使用道具 举报

40

主题

177

帖子

100

银币

后起之秀

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

铜币
248
发表于 2022-7-5 23:19:56 | 显示全部楼层
 
谢谢你,比格尔,谢谢你的建议!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:25:04 | 显示全部楼层
 
非常感谢你,塔瓦,
 
完美的代码。你是最棒的!
回复

使用道具 举报

40

主题

177

帖子

100

银币

后起之秀

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

铜币
248
发表于 2022-7-5 23:31:08 | 显示全部楼层
 
太好了,随时欢迎你。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:36:19 | 显示全部楼层
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:44:35 | 显示全部楼层
Here is a list select option for basicly any one wanting to pick from a list, thanks to AlanJt for original code. My menu would be ^c^c^p(load "listselect")(Load "Hatcher")
 

[code]; By Alan H Apr 2014;select from list box ; thanks to AlanJT for list select(setq lst (list "Ansi31" "Ansi32" "Net" "dots"))(setq lstpick (car (AT:ListSelect               "Set hatch pattern"               "Select style"               10               10               "false"               (vl-sort lst) '
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:49:51 | 显示全部楼层
I prepared a video for the following routine but it did uploaded as an image and not as a .gif file .
 
Try this routine and let me know how things going on with you .
 
  1. (defun c:Test (/ *error* dlg p a i l 1p sc e pl h gr rot r) ;;    Author : Tharwat Al Shoufi 14. Apr. 2014         ;; (defun *error* (msg)   (if (< id 0)     (unload_dialog id)   )   (if (and d (setq d (findfile d)))     (vl-file-delete d)   )   (if (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*")     (princ msg)     (princ (strcat "\nError: " msg))   )   (princ) ) ;;                    ;; (defun dlg (h / d o id head tail go back)   (if (and (setq d (vl-filename-mktemp nil nil ".dcl")) (setq o (open d "w")))     (progn (setq head "test : dialog { label = "Hatch Control";"                  tail ": button { label = "Exit"; key = "esc"; width = 12; height = 2; fixed_width = true; alignment = centered;            is_default = true; is_cancel = true;}"            )            (if h              (write-line                (strcat                  head ": button { label = "ANSI37"; key = "i37"; width = 10; height = 2.5;} spacer; "                  ": button { label = "ANSI31"; key = "i31"; width = 10; height = 2.5;} spacer; " tail "}"                 )                o              )              (write-line                (strcat                  head ": boxed_column { label = "Controls"; : text { label = "Scale";}"                  ": row { : button { label = "+"; key = "isc"; width = 2;}"                  ": button { label = "-"; key = "dsc"; width = 2;}}" "spacer; : text { label = "Rotation";}"                  ": row { : button { label = "+"; key = "iro"; width = 2;}"                  ": button { label = "-"; key = "dro"; width = 2;}}} spacer;" tail "}"                 )                o              )            )            (close o)     )   )   (if (or (not d)           (> 0 (setq id (load_dialog d)))           (not (new_dialog                  "test"                  id                  ""                  (if *loc*                    *loc*                    '(-1 -1)                  )                )           )       )     (progn (if (< id 0)              (unload_dialog id)            )            (if (and d (setq d (findfile d)))              (vl-file-delete d)            )     )     (progn       (action_tile "i37" "(setq go "ANSI37") (done_dialog)")       (action_tile "i31" "(setq go "ANSI31") (done_dialog)")       (if (eq *pat* "ANSI37")         (mapcar '(lambda (u) (mode_tile u 1)) (list "iro" "dro"))       )       (action_tile         "iro"         "(if (>= (setq rot (+ rot (/ pi 12.))) (+ pi pi))                              (setq rot (/ pi 12.)) rot)(setq r t *loc* (done_dialog))"       )       (action_tile         "dro"         "(if (>= (setq rot (- rot (/ pi 12.))) (+ pi pi))                              (setq rot (/ pi 12.)) rot)(setq r t *loc* (done_dialog))"       )       (action_tile "isc" "(setq sc (+ sc 0.5) back t *loc* (done_dialog))")       (action_tile         "dsc"         "(if ( :")))     (progn (setq v   nil                  a   p                  i   1                  sc  1.0                  rot 0.                  l   (cons p l)            )            (while (/= (length l) 4)              (setq 1p (getpoint p (strcat "\n Next point < " (itoa (setq i (1+ i))) " > :")))              (setq l (cons 1p l)                    p 1p              )            )            (setq e (entmakex                      (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(70 . 1) '(90 . 4))                              (mapcar '(lambda (u) (cons 10 u)) (cons a l))                      )                    )            )            (setq pl (entlast))            (command "_.-hatch" "S" e "" "P" *pat* 1.0 0.0 "")            (setq h (entlast))            (vla-put-AssociativeHatch (setq v (vlax-ename->vla-object h)) :vlax-false)            (entdel e)            (if (not (eq pl h))              (dlg nil)            )     )   ) ) (princ))(vl-load-com)
回复

使用道具 举报

40

主题

177

帖子

100

银币

后起之秀

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

铜币
248
发表于 2022-7-5 23:55:10 | 显示全部楼层
 
Thank you,BIGAL,Thank you for your suggestion!
回复

使用道具 举报

40

主题

177

帖子

100

银币

后起之秀

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

铜币
248
发表于 2022-7-5 23:59:45 | 显示全部楼层
 
Thank you very much, Tharwat,
 
Perfect code. You're the greatest!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-4 14:04 , Processed in 0.435455 second(s), 76 queries .

© 2020-2025 乐筑天下

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