乐筑天下

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

[编程交流] 分割矩形

[复制链接]

20

主题

94

帖子

86

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 17:23:04 | 显示全部楼层
我试过你的代码,但似乎不起作用。
 
红线(网格的外部线)仍然存在。
 
  1. ;;-----------------------=={ Draw Grid }==--------------------;;
  2. ;;                                                            ;;
  3. ;;  Dynamically generates a grid with a specified number of   ;;
  4. ;;  rows and columns.                                         ;;
  5. ;;  Works in all UCS/Views.                                   ;;
  6. ;;------------------------------------------------------------;;
  7. ;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
  8. ;;------------------------------------------------------------;;
  9. ;;  Version 1.1    -    13-10-2011                            ;;
  10. ;;------------------------------------------------------------;;
  11. (defun c:dgrid  nil(command "_.ucs" "_ob" pause) (LM:grid nil)(command "_.ucs" "_p"))  ;; Standard
  12. (defun c:dgridd nil(command "_.ucs" "_ob" pause) (LM:grid   t)(command "_.ucs" "_p"))  ;; Dynamic
  13. ;;------------------------------------------------------------;;
  14. (defun LM:grid
  15.    (dyn / *error*_getIntwithDefault _getosmode _parsepoint _makegrid _grX g1 gr ls ms os p1 p3 st )
  16.    (defun *error* ( msg )
  17.        (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
  18.            (princ (strcat "\nError: " msg))
  19.        )
  20.        (redraw) (princ)
  21.    )
  22.    (defun _getIntwithDefault ( msg sym ) (initget 6)
  23.        (set sym
  24.            (cond
  25.                (
  26.                    (getint
  27.                        (strcat msg "<"
  28.                            (itoa
  29.                                (set sym
  30.                                    (cond ((eval sym)) ( 2 ))
  31.                                )
  32.                            )
  33.                            ">: "
  34.                        )
  35.                    )
  36.                )
  37.                (   (eval sym)   )
  38.            )
  39.        )
  40.    )
  41.    (defun _getosmode ( os / lst )
  42.        (foreach mode
  43.           '(
  44.                (0001 . "_end")
  45.                (0002 . "_mid")
  46.                (0004 . "_cen")
  47.                (0008 . "_nod")
  48.                (0016 . "_qua")
  49.                (0032 . "_int")
  50.                (0064 . "_ins")
  51.                (0128 . "_per")
  52.                (0256 . "_tan")
  53.                (0512 . "_nea")
  54.                (1024 . "_qui")
  55.                (2048 . "_app")
  56.                (4096 . "_ext")
  57.                (8192 . "_par")
  58.            )
  59.            (if (not (zerop (logand (car mode) os)))
  60.                (setq lst (cons "," (cons (cdr mode) lst)))
  61.            )
  62.        )
  63.        (apply 'strcat (cdr lst))
  64.    )
  65.    (defun _parsepoint ( pt str / _str->lst lst )
  66.        (defun _str->lst ( str / pos )
  67.            (if (setq pos (vl-string-position 44 str))
  68.                (cons (substr str 1 pos) (_str->lst (substr str (+ pos 2))))
  69.                (list str)
  70.            )
  71.        )
  72.        (if (wcmatch str "`@*")
  73.            (setq str (substr str 2))
  74.            (setq pt '(0.0 0.0 0.0))
  75.        )           
  76.        (if
  77.            (and
  78.                (setq lst (mapcar 'distof (_str->lst str)))
  79.                (vl-every 'numberp lst)
  80.                (< 1 (length lst) 4)
  81.            )
  82.            (mapcar '+ pt lst)
  83.        )
  84.    )
  85. (defun _makegrid ( p1 p3 mode / hd vd hs vs pt k )
  86.        (setq hd (- (car  p3) (car  p1))
  87.              vd (- (cadr p3) (cadr p1))
  88.              hs (/ hd *cols*)
  89.              vs (/ vd *rows*)
  90.        )
  91.        (cond
  92.            (   (= 5 mode)
  93.                (setq pt p1)
  94.                (repeat (1+ *cols*)
  95.                    (grdraw pt (list (car pt) (+ (cadr pt) vd)) 1 1)
  96.                    (setq pt (list (+ (car pt) hs) (cadr pt)))
  97.                )
  98.                (setq pt p1)
  99.                (repeat (1+ *rows*)
  100.                    (grdraw pt (list (+ (car pt) hd) (cadr pt)) 1 1)
  101.                    (setq pt (list (car pt) (+ (cadr pt) vs)))
  102.                )
  103.                t
  104.            )
  105.            (   (= 3 mode)
  106.                (setq pt p1)
  107.                (setq k 0)
  108.                (repeat (1+ *cols*)
  109.                    (setq k (1+ k))
  110.                    (if (or (/= k 1) (/= k (1+ *cols*)))
  111.                        (entmakex
  112.                            (list
  113.                                (cons 0 "LINE")
  114.                                (cons 10 (trans pt 1 0))
  115.                                (cons 11 (trans (list (car pt) (+ (cadr pt) vd)) 1 0))
  116.                            )
  117.                        )
  118.                    )
  119.                    (setq pt (list (+ (car pt) hs) (cadr pt)))
  120.                )
  121.                (setq pt p1)
  122.                (setq k 0)
  123.                (repeat (1+ *rows*)
  124.                    (setq k (1+ k))
  125.                    (if (or (/= k 1) (/= k (1+ *rows*)))
  126.                        (entmakex
  127.                            (list
  128.                                (cons 0 "LINE")
  129.                                (cons 10 (trans pt 1 0))
  130.                                (cons 11 (trans (list (+ (car pt) hd) (cadr pt)) 1 0))
  131.                            )
  132.                        )
  133.                    )
  134.                    (setq pt (list (car pt) (+ (cadr pt) vs)))
  135.                )
  136.                nil
  137.            )
  138.        )
  139.    )
  140.    (defun _grX ( p s c / -s r q )
  141.        (setq -s (- s)
  142.               r (/ (getvar 'VIEWSIZE) (cadr (getvar 'SCREENSIZE)))
  143.               p (trans p 1 3)
  144.        )
  145.        (grvecs
  146.            (list c
  147.                (list -s      -s)  (list s       s)
  148.                (list -s  (1+ -s)) (list (1- s)  s)
  149.                (list (1+ -s) -s)  (list s   (1- s))
  150.                
  151.                (list -s       s)  (list s      -s)
  152.                (list -s   (1- s)) (list (1- s) -s)
  153.                (list (1+ -s)  s)  (list s  (1+ -s))
  154.            )
  155.            (list
  156.                (list r  0. 0. (car  p))
  157.                (list 0. r  0. (cadr p))
  158.                (list 0. 0. r  0.)
  159.                (list 0. 0. 0. 1.)
  160.            )
  161.        )
  162.        p
  163.    )
  164.    
  165.    (_getIntwithDefault "\nSpecify Number of Rows "    '*rows*)
  166.    (_getIntwithDefault "\nSpecify Number of Columns " '*cols*)
  167.    (if (setq p1 (getpoint "\nSpecify Base Point: "))
  168.        (cond
  169.            (   dyn
  170.                (setq os (_getosmode (getvar 'OSMODE))
  171.                      st ""
  172.                )
  173.                (princ (setq ms "\nSpecify Opposite Corner: "))
  174.                (while
  175.                    (progn (setq gr (grread t 15 0) g1 (car gr) p3 (cadr gr))
  176.                        (cond
  177.                            (   (member g1 '(3 5)) (redraw)
  178.                                (if
  179.                                    (and
  180.                                        (zerop (logand 16384 (getvar 'OSMODE)))
  181.                                        (setq op (osnap p3 os))
  182.                                    )
  183.                                    (_grX (setq p3 op) 6 20)
  184.                                )
  185.                                (_makegrid p1 p3 g1)
  186.                            )
  187.                            (   (= g1 2)
  188.                                (cond
  189.                                    (   (= 6 p3)
  190.                                        (if (zerop (logand 16384 (setvar 'OSMODE (boole 6 16384 (getvar 'OSMODE)))))
  191.                                            (princ (strcat "\n<Osnap on>"  ms st))
  192.                                            (princ (strcat "\n<Osnap off>" ms st))
  193.                                        )                                    
  194.                                    )
  195.                                    (   (= 8 p3)
  196.                                        (if (< 0 (strlen st))
  197.                                            (progn
  198.                                                (princ (vl-list->string '(8 32 ))
  199.                                                (setq st (substr st 1 (1- (strlen st))))
  200.                                            )
  201.                                        )
  202.                                        t
  203.                                    )
  204.                                    (   (< 32 p3 127)
  205.                                        (setq st (strcat st (princ (chr p3))))
  206.                                    )
  207.                                    (   (member p3 '(13 32))
  208.                                        (if (< 0 (strlen st))
  209.                                            (if (setq p3 (_parsepoint p1 st))
  210.                                                (_makegrid p1 p3 3)
  211.                                                (princ (strcat (setq st "") "\n2D / 3D Point Required." ms))
  212.                                            )
  213.                                        )
  214.                                    )
  215.                                )
  216.                            )
  217.                        )
  218.                    )
  219.                )
  220.            )
  221.            (   (setq p3 ((if (zerop (getvar 'WORLDUCS)) getpoint getcorner) p1 "\nSpecify Opposite Corner: "))
  222.                (_makegrid p1 p3 3)
  223.            )                 
  224.        )
  225.    )
  226.    (redraw) (princ)
  227. )
  228. (vl-load-com) (princ)
  229. ;;------------------------------------------------------------;;
  230. ;;                         End of File                        ;;
  231. ;;------------------------------------------------------------;;

 
172441bfahg5x543gxiyf7.jpg
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 17:26:26 | 显示全部楼层
我现在明白了。。。
 
更改我的mod:
  1. (if (or (/= k 1) (/= k (1+ *cols*)))
  2. ...
  3. (if (or (/= k 1) (/= k (1+ *rows*)))

 
为此:
  1. (if ([b][color=red]and[/color][/b] (/= k 1) (/= k (1+ *cols*)))
  2. ...
  3. (if ([b][color=red]and[/color][/b] (/= k 1) (/= k (1+ *rows*)))

 
对不起,我错了,我赶时间。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:08 , Processed in 0.371937 second(s), 56 queries .

© 2020-2025 乐筑天下

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