明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2047|回复: 12

[讨论] 如何获取图元信息

[复制链接]
发表于 2022-3-2 10:44:49 | 显示全部楼层 |阅读模式
10明经币
LISP如何能获取所选图元的长和宽,以及所选线段的总长。并复制到粘贴板上,以便调用。谢谢。

最佳答案

查看完整内容

按要求重修改:框选
发表于 2022-3-2 10:44:50 | 显示全部楼层
本帖最后由 htlaser 于 2022-3-7 12:01 编辑

按要求重修改:框选   

本帖子中包含更多资源

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

x

点评

谢谢大师,很完美。  发表于 2022-3-5 19:49
回复

使用道具 举报

发表于 2022-3-2 11:03:19 | 显示全部楼层
长  宽 是指啥  比如  圆 椭圆  样条线等  
回复

使用道具 举报

发表于 2022-3-2 14:11:54 | 显示全部楼层
entget(car(entsel))?:o
回复

使用道具 举报

发表于 2022-3-2 17:28:48 | 显示全部楼层
本帖最后由 htlaser 于 2022-3-2 18:12 编辑

    1. ;============================================================================================================================
    2. (defun c:test (/ cp ent len plst txt txt2  x0 x1 xx y0 y1 yy )
    3.   (vl-load-com)  
    4.   (defun ZML-CLIP-SETSTRING (STR / HTML RESULT)
    5.     (and (= (type STR) 'STR)
    6.       (setq HTML (vlax-create-object "htmlfile"))
    7.       (setq RESULT (vlax-invoke   (vlax-get  (vlax-get HTML 'PARENTWINDOW)   'CLIPBOARDDATA )  'SETDATA   "Text"   STR ))
    8.       (vlax-release-object HTML)))   
    9.   (setq ent (car (entsel "\n请指定一条多段线")))  
    10.   (setq len  (vlax-curve-getdistatparam ent (vlax-curve-getendparam ent)))
    11.   (setq plst(mapcar 'cdr (vl-remove-if (function (lambda (e)(/= 10 (car e)))) (entget ent))))
    12.   (setq x0 (car (vl-sort (mapcar 'car  plst) (function (lambda(e1 e2)(< e1 e2))))))
    13.   (setq X1 (car (vl-sort (mapcar 'car  plst) (function (lambda(e1 e2)(> e1 e2))))))
    14.   (setq y0 (car (vl-sort (mapcar 'cadr plst) (function (lambda(e1 e2)(< e1 e2))))))
    15.   (setq y1 (car (vl-sort (mapcar 'cadr plst) (function (lambda(e1 e2)(> e1 e2))))))
    16.   (setq cp (mapcar '(lambda(x y) (/ (+ x y) 2.0)) (list x0 y0)(list x1 y1)))
    17.   (setq xx (rtos (- x1 x0)2 3))  
    18.   (setq yy (rtos (- y1 y0)2 3))  
    19.   (setq txt(strcat "线段总长="(rtos  len 2 3)"mm" "  "   "X="xx"mm" "  " "Y="yy"mm" ))  
    20.   (ZML-CLIP-SETSTRING txt)
    21.   (princ "\n ")
    22.   (setq txt2 (strcat  "复制成功:" "线段总长="(rtos  len 2 3)"mm" "  "   "X="xx"mm" "  " "Y="yy"mm" ))  
    23.   (princ txt2)  
    24.   (princ )
    25. )   

    26. ;============================================================================================================================
    27. (defun c:test2 (/ ent len obj p1 p2 txt txt2 x y)
    28.   (vl-load-com)  
    29.   (defun ZML-CLIP-SETSTRING (STR / HTML RESULT)
    30.     (and (= (type STR) 'STR)
    31.       (setq HTML (vlax-create-object "htmlfile"))
    32.       (setq RESULT (vlax-invoke   (vlax-get  (vlax-get HTML 'PARENTWINDOW)   'CLIPBOARDDATA )  'SETDATA   "Text"   STR ))
    33.       (vlax-release-object HTML)))   
    34.   (setq ent (car (entsel "\n请获取一个对象")))  
    35.   (setq len  (vlax-curve-getdistatparam ent (vlax-curve-getendparam ent)))
    36.   (setq obj (vlax-ename->vla-object ent))
    37.   (vla-GetBoundingBox obj 'p1 'p2 )
    38.   (setq p1 (vlax-safearray->list p1))
    39.   (setq p2 (vlax-safearray->list p2))
    40.   (setq X (rtos (abs (- (car p1)  (car  p2))) 2 3))        
    41.   (setq Y (rtos (abs (- (cadr p1) (cadr p2))) 2 3))        
    42.   (setq txt(strcat "线段总长="(rtos  len 2 3)"mm" "  "   "X="X"mm" "  " "Y="Y"mm" ))  
    43.   (ZML-CLIP-SETSTRING txt)
    44.   (princ "\n ")
    45.   (setq txt2 (strcat  "复制成功:" "线段总长="(rtos  len 2 3)"mm" "  "   "X="X"mm" "  " "Y="Y"mm" ))  
    46.   (princ txt2)  
    47.   (princ )
    48. )

    49. ;============================================================================================================================


回复

使用道具 举报

发表于 2022-3-2 17:58:52 | 显示全部楼层
题目不清楚
回复

使用道具 举报

发表于 2022-3-2 18:26:52 | 显示全部楼层
搜动态信息查询
回复

使用道具 举报

 楼主| 发表于 2022-3-3 09:41:03 | 显示全部楼层

可能我没有说清楚,不是单选,要框选。附图如下。

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2022-3-5 13:34:45 | 显示全部楼层
很好的东西
学习
回复

使用道具 举报

 楼主| 发表于 2022-3-7 10:27:12 | 显示全部楼层
htlaser 发表于 2022-3-2 10:44
按要求重修改:框选

如果想把精度精确下个位,四舍五入。可能实现?还有就是想把总线长度放在 长宽的后面。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 14:30 , Processed in 0.220654 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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