明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 744|回复: 3

[提问] 矩形长宽,怎么获取,和字符串怎么替换内容

[复制链接]
发表于 2021-7-25 21:41 | 显示全部楼层 |阅读模式
30明经币
求助大佬,矩形的长宽怎么获取,有哪些函数可以取得长宽数值。怎么替换字符串,(批量替换字符串)。新手小白卡住了,麻烦大佬解答一下

最佳答案

查看完整内容

提问得不清不楚,暂且按照我的理解给你几句代码吧
发表于 2021-7-25 21:41 | 显示全部楼层
提问得不清不楚,暂且按照我的理解给你几句代码吧



  1. ;;获取矩形长宽
  2. (defun c:tt (/ area di ename gao kuan pts x)
  3.   (setq ename(car(entsel"\n选择一个矩形")))
  4.   (while (or
  5.            (/= "LWPOLYLINE" (_get-dxf ename 0))
  6.            (/= 4 (length(setq pts(_Vertexs ename))))
  7.            (setq di (mapcar '(lambda(a b)(distance a b))pts (cons (last pts)pts))
  8.              kuan(car di)
  9.              gao(cadr di)
  10.              area(try-get-aear ename)
  11.              x(not(equal (* kuan gao) area))
  12.            )
  13.          )
  14.     (setq ename (car(entsel "\n只能选择矩形多段线,请重新选择")))
  15.   )
  16.   
  17.   (princ(strcat"\n长:"(rtos kuan 2 2)",宽:"(rtos gao 2 2)))
  18.   (princ)
  19. )

  20. ;;字符串批量替换
  21. (defun c:tt2 (/ str)
  22.   (setq str "123456123456123456")
  23.   (try-StringReplace str "123" "000")
  24. )



  25. ;;;======================================
  26. ;;;===========以下为内裤部分=============
  27. ;;;======================================
  28. (defun _get-dxf (en code / ty)
  29.   (cdr (assoc code (entget en '("*"))))
  30. )
  31. (defun _Vertexs (ename / data lst);
  32.   (setq  data (entget ename))
  33.   (setq lst (vl-remove-if-not '(lambda (x) (= (car x) 10)) data))
  34.   (mapcar 'cdr lst)
  35. )
  36. (defun try-get-aear (en)(vla-get-Area(try-object en)))
  37. (defun try-StringReplace(str a b);;BY:LLSheng_73
  38.   (if(and(=(type str)'str)
  39.        (apply'and(mapcar'(lambda(x)(=(type x)'str))(setq a(if(=(type a)'list)a(list a)))))
  40.        (apply'and(mapcar'(lambda(x)(=(type x)'str))(setq b(if(=(type b)'list)b(mapcar'(lambda(x)b)a))))))
  41.     (setq str(_strsplit str a nil)
  42.       str(apply'strcat(mapcar'strcat(car str)(mapcar'(lambda(x)(if(=""x)x(nth(vl-position x a)b)))(last str)))))
  43.     str))
  44. (defun try-ss2EnList(ss / a en lst)
  45.   (setq a -1)
  46.   (if ss
  47.     (while
  48.       (setq en(ssname ss(setq a(1+ a))))
  49.       (setq lst(cons en lst))
  50.     )
  51.   )
  52.   (reverse lst)
  53. )
  54. (defun try-lst-div (lst nn / lst2)
  55.   (foreach n lst
  56.     (if (and lst2 (/= nn (length (car lst2))))
  57.       (setq lst2 (cons (append (car lst2) (list n)) (cdr lst2)))
  58.       (setq lst2 (cons (list n) lst2))
  59.     )
  60.   )
  61.   (reverse lst2)
  62. )
  63. (defun try-object (en)(if(= 'ename (type en))(vlax-ename->vla-object en)en))
  64. (defun _strsplit(str splits f / i a b l );;BY:LLSheng_73
  65.   (if f(setq str(vl-list->string(vl-remove 32(vl-string->list str)))))
  66.   (while(<""str)
  67.     (if(vl-remove'nil(mapcar'(lambda(x)(vl-string-search x str))splits))
  68.       (setq i(car(vl-sort(vl-remove'nil(mapcar'(lambda(x)(if(setq l(vl-string-search x str))(cons l x)))splits))
  69.                    '(lambda(s1 s2)(<(car s1)(car s2)))))
  70.         a(cons(substr str 1(car i))a)b(cons(cdr i)b)
  71.         str(substr str(+(car i)(strlen(cdr i))1)))
  72.       (setq a(cons str a)b(cons "" b)str"")))
  73.   (list(reverse a)(reverse b)))




回复

使用道具 举报

发表于 2021-7-25 22:45 | 显示全部楼层
 论坛里应该有很多现成的,找到合适的应该不难,用心仔细找一下,说不定能找到好几个能满足的
回复

使用道具 举报

发表于 2021-7-26 18:38 | 显示全部楼层
http://atlisp.cn/package-info?na ... &edition=stable
列出正交矩形宽高表.矩形包括倒角或圆角矩形,缺一角或两个角的矩形。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 15:24 , Processed in 0.147214 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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