明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1124|回复: 9

[资源] 请大佬帮忙修改一下代码

[复制链接]
发表于 2023-4-10 12:35:23 | 显示全部楼层 |阅读模式
10明经币
本帖最后由 huisguiji 于 2024-8-29 22:29 编辑

这个代码也是在本论坛下载的,现在的问题是 数据 长*宽= 和 数量 是2行文字 我想要的是 数据和数量 成1行文字
以下是代码
(defun qbc (pts / b h)
(setq b (distance (car pts) (cadddr pts)))
(setq h (distance (car pts) (cadr pts)))
(cons (max b h) (min b h))
);结束qbc
(defun c:tg ( / bclst pts ss el bc_new i p2 p3 m x1 x2)
(princ "\n请框选矩形:")
(setq ss (ssget '((0 . "LWPOLYLINE") (90 . 4))))
(setq i 0 bclst nil pts nil)
(repeat (sslength ss)
  (setq el (entget (ssname ss i)))
  (setq pts nil)
  (foreach pt el (if (= (car pt) 10) (setq pts (cons (cdr pt) pts))))      
  (setq bclst (cons (qbc pts) bclst))
  (setq i (1+ i))
);repeat
(setq bc_new nil)
(while bclst
  (setq m (car bclst) x1 (length bclst))
  (setq bclst (vl-remove m bclst))
  (setq x2 (length bclst))
  (setq n (- x1 x2))
  (setq bc_new (cons (list m n) bc_new))
)
(setq p2 (getpoint "\起始位置"))
(setq p3 (polar p2 0 400))
(command "_.TEXT" "c" (polar p2 (* pi 0.5) 140) "70" "0" "高*宽=");指定书写标题的位置
(command "_.TEXT" "c" (polar p3 (* pi 0.5) 140) "70" "0" "数量")
(foreach bg bc_new                                                      ;设定重复次数为新表的长度
  (command "_.TEXT" "c" p2 "70" "0" (strcat (rtos (car (car bg)) 2)"*" (rtos (cdr (car bg))2)"="))      
  (command "_.TEXT" "c" p3 "70" "0" (cadr bg))
  (setq p2 (polar p2 (* pi 1.5) 140))
  (setq p3 (polar p2 0 400))
)
(princ)
)

附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2023-4-10 12:35:24 | 显示全部楼层
  1. (defun qbc (pts / b h)
  2. (setq b (distance (car pts) (cadddr pts)))
  3. (setq h (distance (car pts) (cadr pts)))
  4. (cons (max b h) (min b h))
  5. );结束qbc
  6. (defun c:tg ( / bclst pts ss el bc_new i p2 p3 m x1 x2)
  7. (princ "\n请框选矩形:")
  8. (setq ss (ssget '((0 . "LWPOLYLINE") (90 . 4))))
  9. (setq i 0 bclst nil pts nil)
  10. (repeat (sslength ss)
  11.   (setq el (entget (ssname ss i)))
  12.   (setq pts nil)
  13.   (foreach pt el (if (= (car pt) 10) (setq pts (cons (cdr pt) pts))))      
  14.   (setq bclst (cons (qbc pts) bclst))
  15.   (setq i (1+ i))
  16. );repeat
  17. (setq bc_new nil)
  18. (while bclst
  19.   (setq m (car bclst) x1 (length bclst))
  20.   (setq bclst (vl-remove m bclst))
  21.   (setq x2 (length bclst))
  22.   (setq n (- x1 x2))
  23.   (setq bc_new (cons (list m n) bc_new))
  24. )
  25. (setq p2 (getpoint "\起始位置"))
  26. (setq p3 (polar p2 0 400))
  27. (command "_.TEXT" "c" (polar p2 (* pi 0.5) 140) "70" "0" "高*宽=数量");指定书写标题的位置

  28. (foreach bg bc_new                                                      ;设定重复次数为新表的长度
  29.   (command "_.TEXT" "c" p2 "70" "0"
  30.            (strcat (rtos (car (car bg)) 2)"*" (rtos (cdr (car bg)) 2) "=" (itoa (cadr bg))))

  31.   (setq p2 (polar p2 (* pi 1.5) 140))
  32. (princ)
  33. )
回复

使用道具 举报

发表于 2023-4-13 09:18:00 | 显示全部楼层
最好可以上个cad图方便测试
回复

使用道具 举报

 楼主| 发表于 2024-9-4 11:37:39 | 显示全部楼层
有没有大师看到啊
回复

使用道具 举报

 楼主| 发表于 2024-9-6 12:09:32 | 显示全部楼层

用不了 提示这个 Application Error: 2 :- 输入的列表有缺陷ADS 请求错误
回复

使用道具 举报

发表于 2024-9-18 13:37:38 | 显示全部楼层
huisguiji 发表于 2024-9-6 12:09
用不了 提示这个 Application Error: 2 :- 输入的列表有缺陷ADS 请求错误

好多天没登了,才看到。不知道你解决了没有,刚才把我上传的代码复制出来又试了一下,最后  (princ)前面少了半个小括号,你在(princ) 的上一行,加一个   )   应该就可以了。我这边试用的是没有问题了。
(上传前我试过的,不知道怎么会漏了半个括号
回复

使用道具 举报

 楼主| 发表于 2024-9-19 10:40:52 | 显示全部楼层
杨小五 发表于 2024-9-18 13:37
好多天没登了,才看到。不知道你解决了没有,刚才把我上传的代码复制出来又试了一下,最后  (princ)前面 ...

感谢大佬,可以了。另外还有一个字体大小的问题,如果我的文字样式里大小是设置成70,这个统计清单文字就会显示为0 只能在文字样式里设置成0 这个才会显示文字。能帮我改成随当前的文字样式里的大小吗?
回复

使用道具 举报

发表于 2024-9-25 13:58:26 | 显示全部楼层
本帖最后由 杨小五 于 2024-9-25 14:10 编辑

看下一条回复,这条好像撤销不了,删掉了
回复

使用道具 举报

发表于 2024-9-25 14:07:09 | 显示全部楼层
本帖最后由 杨小五 于 2024-9-25 14:10 编辑



(defun qbc (pts / b h)
(setq b (distance (car pts) (cadddr pts)))
(setq h (distance (car pts) (cadr pts)))
(cons (max b h) (min b h))
);结束qbc

(defun c:tg ( / bclst pts ss el bc_new i p2 p3 m x1 x2)
(princ "\n请框选矩形:")
(setq ss (ssget '((0 . "LWPOLYLINE") (90 . 4))))
(setq i 0 bclst nil pts nil)
(repeat (sslength ss)
  (setq el (entget (ssname ss i)))
  (setq pts nil)
  (foreach pt el (if (= (car pt) 10) (setq pts (cons (cdr pt) pts))))      
  (setq bclst (cons (qbc pts) bclst))
  (setq i (1+ i))
);repeat
(setq bc_new nil)
(while bclst
  (setq m (car bclst) x1 (length bclst))
  (setq bclst (vl-remove m bclst))
  (setq x2 (length bclst))
  (setq n (- x1 x2))
  (setq bc_new (cons (list m n) bc_new))
)
(setq p2 (getpoint "\起始位置"))
(setq p3 (polar p2 0 400))
  
(setq tstyles (vla-get-textstyles (vla-get-activedocument (vlax-get-acad-object))))
(setq tstyle(vla-item tstyles (getvar "textstyle")))
(setq hh(vla-get-height tstyle))
;;;(if (/= hh 0)(vla-put-height tstyle 0.0))
(if (= hh 0)
(command "_.TEXT" "c" (polar p2 (* pi 0.5) (* 2 (getvar "textsize"))) (getvar "textsize") "0" "高*宽=数量");指定书写标题的位置
(command "_.TEXT" "c" (polar p2 (* pi 0.5) (* 2 hh))  "0" "高*宽=数量")
  )

(foreach bg bc_new                                                      ;设定重复次数为新表的长度
(if (= hh 0)
  (command "_.TEXT" "c" p2 (getvar "textsize") "0"
           (strcat (rtos (car (car bg)) 2)"*" (rtos (cdr (car bg)) 2) "=" (itoa (cadr bg))))
  (command "_.TEXT" "c" p2  "0"
           (strcat (rtos (car (car bg)) 2)"*" (rtos (cdr (car bg)) 2) "=" (itoa (cadr bg))))
  )

  (setq p2 (polar p2 (* pi 1.5) (* 2 (getvar "textsize"))))
  )
(princ)
)
回复

使用道具 举报

 楼主| 发表于 2024-9-25 16:58:10 | 显示全部楼层
杨小五 发表于 2024-9-25 14:07
(defun qbc (pts / b h)
(setq b (distance (car pts) (cadddr pts)))
(setq h (distance (car pts)  ...

完美了 谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 06:36 , Processed in 0.202473 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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