明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: huisguiji

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

[复制链接]
发表于 2024-12-31 15:23:55 | 显示全部楼层

我还没有权限回复留言,这里给你回复一下吧。你的那个程序设计的就是长宽更大的一个值是高,小的是宽,也就是这个200*100的矩形不管是横着放竖着放或者斜着放,得到的结果都是一样的高200宽100。如果你只要在Y方向是高,X方向是宽,那就要改一下,斜着的情况就不好判断哪边是宽哪边是高了。
回复

使用道具 举报

发表于 2024-12-31 16:30:37 | 显示全部楼层

你留言的那个问题,我
  1. (defun c:tt();标注矩形高*宽(高为Y方向,宽为X方向),倾斜的矩形宽高判断标准不明确,为保持准确性,不参与计算。
  2.   (setq ss(ssget '((0 . "lwpolyline"))))
  3.   (setq i 0 lst'())
  4.   (repeat (sslength ss)
  5.     (setq plw(ssname ss i))
  6.     (setq pts(mapcar 'cdr (vl-remove-if '(lambda(a)(/= (car a) 10)) (entget plw))))
  7.     (setq pts1(vl-sort pts '(lambda(a b) (<= (car a) (car b)))))
  8.     (setq hh(abs (- (cadr (car pts1)) (cadr (cadr pts1))))
  9.           ww (- (car (caddr pts1)) (car (car pts1))))
  10.     (if
  11.       (or
  12.           (and (equal (car (car pts)) (car (cadr pts)) 0.001)
  13.                (equal (car (caddr pts)) (car (cadddr pts)) 0.001)
  14.                (equal (cadr(car pts)) (cadr (cadddr pts)) 0.001)
  15.                (equal (cadr(cadr pts)) (cadr (caddr pts)) 0.001)
  16.                )
  17.           (and (equal (cadr (car pts)) (cadr (cadr pts)) 0.001)
  18.                (equal (cadr (caddr pts)) (cadr (cadddr pts)) 0.001)
  19.                (equal (car(car pts)) (car (cadddr pts)) 0.001)
  20.                (equal (car(cadr pts)) (car (caddr pts)) 0.001)
  21.                )
  22.       )

  23.     (setq lst (append lst (list (list hh ww))))
  24.       )
  25.     (setq i(1+ i))
  26.     )
  27.   (setq lst(vl-sort lst '(lambda(a b) (<= (car a) (car b)))))
  28.   (setq tmp_lst'())
  29.   (setq i 0)
  30.   (while lst
  31.     (setq tmp_lst(append tmp_lst (list (list (car lst)
  32.                                        (- (length lst)
  33.                                           (length (setq lst(vl-remove (car lst) lst))))))))
  34.     )
  35.   (setq lst tmp_lst)
  36.    
  37.     (setq pt(getpoint "\n文字插入点:"))
  38. ;;;    (command "_.TEXT" "c" (polar p2 (* pi 0.5) (* 2 (getvar "textsize"))) (getvar "textsize") "0" "高*宽=数量")
  39.     (entmake (list '(0 . "text")(cons 1  "高*宽=数量")  (cons 10 pt)(cons 40 (getvar "textsize"))))
  40.   (setq i 0)
  41.   (repeat (length lst)
  42.     (setq hh(car (car (nth i lst)))
  43.           ww(cadr (car (nth i lst)))
  44.           co(cadr (nth i lst)))
  45.   (entmake (list '(0 . "text")
  46.                    (cons 1 (strcat (rtos hh) "*" (rtos ww) "=" (itoa co)))
  47.                    (cons 10 (polar pt (* pi 1.5) (* (1+ i) (* 2 (getvar "textsize")))))
  48.                    (cons 40 (getvar "textsize"))))
  49.     (setq i(1+ i))

  50.   )
  51.   )
把你的那个程序重新写了一下,你可以试试看用这个
回复

使用道具 举报

 楼主| 发表于 2025-1-1 15:35:13 | 显示全部楼层
本帖最后由 huisguiji 于 2025-1-1 15:47 编辑
杨小五 发表于 2024-12-31 16:30
你留言的那个问题,我把你的那个程序重新写了一下,你可以试试看用这个

非常感谢大佬的帮助,还有2个细节可以优化吗,1 文字样式没有跟随系统了 2 能否把误差0.4毫米以内的数据归为一起 比如有矩形200*100 200*100.4  统计的清单是200*100=1 200*100=1  改为200*100=2
回复

使用道具 举报

发表于 2025-1-2 16:02:14 | 显示全部楼层
huisguiji 发表于 2025-1-1 15:35
非常感谢大佬的帮助,还有2个细节可以优化吗,1 文字样式没有跟随系统了 2 能否把误差0.4毫米以内的数据 ...

把程序里对应的这句,替换一下
(setq tmp_lst(append tmp_lst (list (list (car lst)
                                       (- (length lst)
                                          (length
                                            (setq lst(vl-remove-if '(lambda(a)(and (<= (- (car a) 0.4) (car (car lst)) (+ (car a) 0.4))
                              (<= (- (cadr a) 0.4) (cadr (car lst)) (+ (cadr a) 0.4)))) lst)))
                                          )))))
回复

使用道具 举报

发表于 2025-1-2 16:05:52 | 显示全部楼层
huisguiji 发表于 2025-1-1 15:35
非常感谢大佬的帮助,还有2个细节可以优化吗,1 文字样式没有跟随系统了 2 能否把误差0.4毫米以内的数据 ...

我后面给你的这个插件里面没有写关于文字样式的设置,使用的是当前文字样式。所以你说的文字样式没有跟随系统我没理解,也没办法帮你调。
回复

使用道具 举报

 楼主| 发表于 2025-1-3 11:04:39 | 显示全部楼层
杨小五 发表于 2025-1-2 16:02
把程序里对应的这句,替换一下
(setq tmp_lst(append tmp_lst (list (list (car lst)
                 ...

换了这句后只能统计一个数据了,比如有100*200 100*300  300*200的矩形 数据只有100*200=1
回复

使用道具 举报

 楼主| 发表于 2025-1-3 11:06:54 | 显示全部楼层
杨小五 发表于 2025-1-2 16:05
我后面给你的这个插件里面没有写关于文字样式的设置,使用的是当前文字样式。所以你说的文字样式没有跟随 ...

就我文字样式的字体是宋体的 你这个数据字体是standard的
回复

使用道具 举报

发表于 2025-1-3 16:20:36 | 显示全部楼层
huisguiji 发表于 2025-1-3 11:06
就我文字样式的字体是宋体的 你这个数据字体是standard的

你把你的微信私信发给我吧,我们微信沟通。我权限低,还发不了私信
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:27 , Processed in 0.143425 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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