明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 881|回复: 13

绘制表格插件,请教大家

[复制链接]
发表于 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)
)


发表于 2024-3-16 11:26 | 显示全部楼层
那还是我存为lisp文件吧

本帖子中包含更多资源

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

x
回复 支持 1 反对 1

使用道具 举报

发表于 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)
)
发表于 2024-3-16 11:03 | 显示全部楼层
本帖最后由 ssyfeng 于 2024-3-16 11:06 编辑

1、把表格中字母改成数字,看下面代码:
  1. (defun c:tt()
  2.    (setvar "cmdecho" 0)
  3.    (setq os (getvar "osmode"))
  4.    (setvar "osmode" 0)
  5.    (setq pt1 (getpoint "\n第一角点: "))
  6.    (setq pt3 (getcorner pt1 "\n另一角点: "))
  7.    (command "rectang" "w" 1 pt1 pt3)
  8.    (setq wnn (1+ (getint "\n栏数 ||| <5>: ")))
  9.    (if (null wnn) (setq wnn 5))
  10.    (setq hnn (1+ (getint "\n行数 --- <5>: ")))
  11.    (if (null hnn) (setq hnn 5))
  12.    (setq pt2 (list (car pt3) (cadr pt1)))
  13.    (setq pt4 (list (car pt1) (cadr pt3)))
  14.    (setq ang (angle pt1 pt3))
  15.    (cond ((and (> ang 0) (< ang (/ pi 2)))  (setq pp1 pt1 pp2 pt2 pp3 pt3 pp4 pt4))
  16.          ((and (> ang (/ pi 2)) (< ang pi)) (setq pp1 pt2 pp2 pt1 pp3 pt4 pp4 pt3))
  17.          ((and (> ang pi) (< ang (* pi 1.5))) (setq pp1 pt3 pp2 pt4 pp3 pt1 pp4 pt2))
  18.          ((and (> ang (* pi 1.5)) (< ang (* pi 2))) (setq pp1 pt4 pp2 pt3 pp3 pt2 pp4 pt1))
  19.    )
  20.    (setq num 1 txt 1)
  21.    (setq ww (distance pp1 pp2))
  22.    (setq hh (distance pp1 pp4))
  23.    (setq pt1 pp4 ppbas pp4 key 1)
  24.    (repeat hnn
  25.       (setq pt1 (polar pt1 (* pi 1.5) (/ hh hnn)))
  26.       (setq pt2 (polar pt1 0 ww))
  27.       (command "line" pt1 pt2 "")
  28.       (if (> key 1)
  29.          (progn
  30.            (setq txtins (inters ppbas (polar pt1 0 (/ ww wnn)) pt1 (polar ppbas 0 (/ ww wnn))))
  31.            (command "text" "m" txtins (/ hh hnn 2) 0 (itoa num))
  32.            (setq num (1+ num))
  33.          )
  34.       )
  35.       (setq ppbas pt1 key (1+ key))
  36.   )
  37.   (setq pt1 pp4 ppbas pp4 key 1)
  38.   (repeat wnn
  39.       (setq pt1 (polar pt1 0 (/ ww wnn)))
  40.       (setq pt2 (polar pt1 (* pi 1.5) hh))
  41.       (command "line" pt1 pt2 "")
  42.       (if (> key 1)
  43.          (progn
  44.            (setq txtins (inters ppbas (polar pt1 (* pi 1.5) (/ hh hnn)) pt1 (polar ppbas (* pi 1.5) (/ hh hnn))))
  45.            (command "text" "m" txtins (/ hh hnn 2) 0 (itoa txt))
  46.            (setq txt (1+ txt))
  47.          )
  48.       )
  49.       (setq ppbas pt1 key (1+ key))
  50.   )      

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




 楼主| 发表于 2024-3-16 11:18 | 显示全部楼层
谢谢你了~代码复制进去,显示不能保存ANSI文件,说含有unicode
发表于 2024-3-16 15:17 | 显示全部楼层
ssyfeng 发表于 2024-3-16 11:26
那还是我存为lisp文件吧

非常有用!!!!!!!
发表于 2024-3-19 10:18 | 显示全部楼层
路过捡宝,表格插件有需求,很有用!
发表于 2024-3-21 22:00 | 显示全部楼层
这程序写的  实用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 16:53 , Processed in 0.316394 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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