被风吹走的灰尘 发表于 2024-3-16 10:56

绘制表格插件,请教大家

网上找到的代码,不会修改,请教大家!
1、怎么把表格横向的字母改成数字?
2、怎么增加设定单个小表格高度和宽度,或者说怎么在cad绘制一个指定高度、宽度、行和列数量的插件?


(defun c:lsp_59()
   (setvar "cmdecho" 0)
   (setq os (getvar "osmode"))
   (setvar "osmode" 0)
   (setq pt1 (getpoint "\n第一角点: "))
   (setq pt3 (getcorner pt1 "\n另一角点: "))
   (command "rectang" "w" 1 pt1 pt3)
   (setq wnn (1+ (getint "\n栏数 ||| <5>: ")))
   (if (null wnn) (setq wnn 5))
   (setq hnn (1+ (getint "\n行数 --- <5>: ")))
   (if (null hnn) (setq hnn 5))
   (setq pt2 (list (car pt3) (cadr pt1)))
   (setq pt4 (list (car pt1) (cadr pt3)))
   (setq ang (angle pt1 pt3))
   (cond ((and (> ang 0) (< ang (/ pi 2)))(setq pp1 pt1 pp2 pt2 pp3 pt3 pp4 pt4))
         ((and (> ang (/ pi 2)) (< ang pi)) (setq pp1 pt2 pp2 pt1 pp3 pt4 pp4 pt3))
         ((and (> ang pi) (< ang (* pi 1.5))) (setq pp1 pt3 pp2 pt4 pp3 pt1 pp4 pt2))
         ((and (> ang (* pi 1.5)) (< ang (* pi 2))) (setq pp1 pt4 pp2 pt3 pp3 pt2 pp4 pt1))
   )
   (setq num 1 txt 65)
   (setq ww (distance pp1 pp2))
   (setq hh (distance pp1 pp4))
   (setq pt1 pp4 ppbas pp4 key 1)
   (repeat hnn
      (setq pt1 (polar pt1 (* pi 1.5) (/ hh hnn)))
      (setq pt2 (polar pt1 0 ww))
      (command "line" pt1 pt2 "")
      (if (> key 1)
         (progn
         (setq txtins (inters ppbas (polar pt1 0 (/ ww wnn)) pt1 (polar ppbas 0 (/ ww wnn))))
         (command "text" "m" txtins (/ hh hnn 2) 0 (itoa num))
         (setq num (1+ num))
         )
      )
      (setq ppbas pt1 key (1+ key))
)
(setq pt1 pp4 ppbas pp4 key 1)
(repeat wnn
      (setq pt1 (polar pt1 0 (/ ww wnn)))
      (setq pt2 (polar pt1 (* pi 1.5) hh))
      (command "line" pt1 pt2 "")
      (if (> key 1)
         (progn
         (setq txtins (inters ppbas (polar pt1 (* pi 1.5) (/ hh hnn)) pt1 (polar ppbas (* pi 1.5) (/ hh hnn))))
         (command "text" "m" txtins (/ hh hnn 2) 0 (chr txt))
         (setq txt (1+ txt))
         )
      )
      (setq ppbas pt1 key (1+ key))
)      

(prin1)
)


ssyfeng 发表于 2024-3-16 11:26

那还是我存为lisp文件吧

ferious 发表于 2024-3-19 10:17

大神写好的,默认空格可以用。
(defun c:tt(/ ang hh hnn key num os pp1 pp2 pp3 pp4 ppbas pt1 pt2 pt3 pt4 txt txtins wnn ww)
        (setvar "cmdecho" 0)
        (setq os (getvar "osmode"))
        (setvar "osmode" 0)
        (setq pt1 (getpoint "\n第一角点: "))
        (setq pt3 (getcorner pt1 "\n另一角点: "))
        (command "rectang" "w" 1 pt1 pt3)
        (if (setq wnn (getint "\n栏数 ||| <5>: "))
                (setq wnn (1+ wnn))
                (setq wnn 5)
        )
        (if (setq hnn (getint "\n行数 --- <5>: "))
                (setq hnn (1+ hnn))
                (setq hnn 5)
        )
        (setq pt2 (list (car pt3) (cadr pt1)))
        (setq pt4 (list (car pt1) (cadr pt3)))
        (setq ang (angle pt1 pt3))
        (cond ((and (> ang 0) (< ang (/ pi 2)))(setq pp1 pt1 pp2 pt2 pp3 pt3 pp4 pt4))
                ((and (> ang (/ pi 2)) (< ang pi)) (setq pp1 pt2 pp2 pt1 pp3 pt4 pp4 pt3))
                ((and (> ang pi) (< ang (* pi 1.5))) (setq pp1 pt3 pp2 pt4 pp3 pt1 pp4 pt2))
                ((and (> ang (* pi 1.5)) (< ang (* pi 2))) (setq pp1 pt4 pp2 pt3 pp3 pt2 pp4 pt1))
        )
        (setq num 1 txt 1)
        (setq ww (distance pp1 pp2))
        (setq hh (distance pp1 pp4))
        (setq pt1 pp4 ppbas pp4 key 1)
        (repeat hnn
                (setq pt1 (polar pt1 (* pi 1.5) (/ hh hnn)))
                (setq pt2 (polar pt1 0 ww))
                (command "line" pt1 pt2 "")
                (if (> key 1)
                        (progn
                                (setq txtins (inters ppbas (polar pt1 0 (/ ww wnn)) pt1 (polar ppbas 0 (/ ww wnn))))
                                (command "text" "m" txtins (/ hh hnn 2) 0 (itoa num))
                                (setq num (1+ num))
                        )
                )
                (setq ppbas pt1 key (1+ key))
)
(setq pt1 pp4 ppbas pp4 key 1)
(repeat wnn
                (setq pt1 (polar pt1 0 (/ ww wnn)))
                (setq pt2 (polar pt1 (* pi 1.5) hh))
                (command "line" pt1 pt2 "")
                (if (> key 1)
                        (progn
                                (setq txtins (inters ppbas (polar pt1 (* pi 1.5) (/ hh hnn)) pt1 (polar ppbas (* pi 1.5) (/ hh hnn))))
                                (command "text" "m" txtins (/ hh hnn 2) 0 (itoa txt))
                                (setq txt (1+ txt))
                        )
                )
                (setq ppbas pt1 key (1+ key))
)      
       
(prin1)
)

ssyfeng 发表于 2024-3-16 11:03

本帖最后由 ssyfeng 于 2024-3-16 11:06 编辑

1、把表格中字母改成数字,看下面代码:
(defun c:tt()
   (setvar "cmdecho" 0)
   (setq os (getvar "osmode"))
   (setvar "osmode" 0)
   (setq pt1 (getpoint "\n第一角点: "))
   (setq pt3 (getcorner pt1 "\n另一角点: "))
   (command "rectang" "w" 1 pt1 pt3)
   (setq wnn (1+ (getint "\n栏数 ||| <5>: ")))
   (if (null wnn) (setq wnn 5))
   (setq hnn (1+ (getint "\n行数 --- <5>: ")))
   (if (null hnn) (setq hnn 5))
   (setq pt2 (list (car pt3) (cadr pt1)))
   (setq pt4 (list (car pt1) (cadr pt3)))
   (setq ang (angle pt1 pt3))
   (cond ((and (> ang 0) (< ang (/ pi 2)))(setq pp1 pt1 pp2 pt2 pp3 pt3 pp4 pt4))
         ((and (> ang (/ pi 2)) (< ang pi)) (setq pp1 pt2 pp2 pt1 pp3 pt4 pp4 pt3))
         ((and (> ang pi) (< ang (* pi 1.5))) (setq pp1 pt3 pp2 pt4 pp3 pt1 pp4 pt2))
         ((and (> ang (* pi 1.5)) (< ang (* pi 2))) (setq pp1 pt4 pp2 pt3 pp3 pt2 pp4 pt1))
   )
   (setq num 1 txt 1)
   (setq ww (distance pp1 pp2))
   (setq hh (distance pp1 pp4))
   (setq pt1 pp4 ppbas pp4 key 1)
   (repeat hnn
      (setq pt1 (polar pt1 (* pi 1.5) (/ hh hnn)))
      (setq pt2 (polar pt1 0 ww))
      (command "line" pt1 pt2 "")
      (if (> key 1)
         (progn
         (setq txtins (inters ppbas (polar pt1 0 (/ ww wnn)) pt1 (polar ppbas 0 (/ ww wnn))))
         (command "text" "m" txtins (/ hh hnn 2) 0 (itoa num))
         (setq num (1+ num))
         )
      )
      (setq ppbas pt1 key (1+ key))
)
(setq pt1 pp4 ppbas pp4 key 1)
(repeat wnn
      (setq pt1 (polar pt1 0 (/ ww wnn)))
      (setq pt2 (polar pt1 (* pi 1.5) hh))
      (command "line" pt1 pt2 "")
      (if (> key 1)
         (progn
         (setq txtins (inters ppbas (polar pt1 (* pi 1.5) (/ hh hnn)) pt1 (polar ppbas (* pi 1.5) (/ hh hnn))))
         (command "text" "m" txtins (/ hh hnn 2) 0 (itoa txt))
         (setq txt (1+ txt))
         )
      )
      (setq ppbas pt1 key (1+ key))
)      

(prin1)
)2、第二个问题不是三言两语说的完,下面论坛的一个差不多的帖子,可能对你有用:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=184962




被风吹走的灰尘 发表于 2024-3-16 11:18

谢谢你了~代码复制进去,显示不能保存ANSI文件,说含有unicode

被风吹走的灰尘 发表于 2024-3-16 11:30

谢谢~~谢谢

longer1000 发表于 2024-3-16 15:17

ssyfeng 发表于 2024-3-16 11:26
那还是我存为lisp文件吧

非常有用!!!!!!!

xcmdos 发表于 2024-3-17 20:54

非常有用!!!!!!!

jkop 发表于 2024-3-19 10:18

路过捡宝,表格插件有需求,很有用!

zmzk 发表于 2024-3-21 22:00

这程序写的实用
页: [1] 2
查看完整版本: 绘制表格插件,请教大家