明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 963|回复: 9

[源码] 线批量变粗功能 源码

[复制链接]
发表于 2020-3-28 20:29 | 显示全部楼层 |阅读模式
  1. (defun c:xk (/ SS DIS VLX ENDATA TYP PTS PTE LST)
  2. ;(if (null (setq ss (car (gsssget "请选择要改变线宽的线" "0_*E,arc")))) (exit))
  3. (setq ss (ssget))
  4. (setq ss (ssget->ename-list ss));自己写函数
  5. (setq dis (getdist "\n请输入线的宽度"))
  6. (foreach x ss
  7.         (setq vlx (vlax-ename->vla-object x)
  8.               endata (entget x)
  9.               typ (cdr (assoc 0 endata))
  10.               pts (vlax-curve-getstartpoint  vlx)
  11.               pte (vlax-curve-getendpoint  vlx)
  12.               lst (mapcar '(lambda (x)
  13.                   (vlax-get-property vlx x))
  14.                   (list  'Layer 'Linetype 'LinetypeScale 'color)))
  15.         (cond
  16.         ((= "LINE" typ)
  17.         (progn
  18.           (entmake
  19.           (list '(0 . "LWPOLYLINE")
  20.                 '(100 . "AcDbEntity")
  21.                 '(100 . "AcDbPolyline")
  22.                 (cons 90 2)
  23.                 (cons 10 pts)
  24.                 (cons 10 pte)
  25.                 )
  26.             );end enmake
  27.           (mapcar '(lambda (x y)
  28.                    (vlax-put-property  (vlax-ename->vla-object (entlast)) x y))  
  29.                    (list 'Layer 'Linetype 'LinetypeScale 'color) lst)
  30.           (vlax-put-property (vlax-ename->vla-object (entlast)) 'ConstantWidth  dis)
  31.           (entdel x)
  32.         ));end condline
  33.         ((= "CIRCLE" typ)
  34.          (progn
  35.          (circle_ploy endata)
  36.          (mapcar '(lambda (x y)
  37.                    (vlax-put-property  (vlax-ename->vla-object (entlast)) x y))  
  38.                    (list 'Layer 'Linetype 'LinetypeScale 'color) lst)
  39.           (vlax-put-property (vlax-ename->vla-object (entlast)) 'ConstantWidth  dis)
  40.           (entdel x)
  41.          ));end conrcircle
  42.         ((= "LWPOLYLINE" typ)  (vlax-put-property vlx 'ConstantWidth  dis))
  43.          (T
  44.          (progn
  45.          (setvar "PEDITACCEPT" 1)
  46.          (vl-cmdf  "._pedit" x "")
  47.          (mapcar '(lambda (x y)
  48.                    (vlax-put-property  (vlax-ename->vla-object (entlast)) x y))  
  49.                    (list 'Layer 'Linetype 'LinetypeScale 'color) lst)
  50.           (vlax-put-property (vlax-ename->vla-object (entlast)) 'ConstantWidth  dis)
  51.           ;(entdel x)
  52.          ));end conrcircle
  53.         
  54.         );end cond
  55.       
  56.         
  57. );end foreach
  58. (princ "\n***********************完成*********GS石材自动下单软件 出品 程序订制 老蒋179174787*********")
  59. (prin1)
  60. )
  61. ;;圆转多段线
  62. (defun circle_ploy (entlst / NORM CENTER R PRO_X)
  63.     (setq norm  (assoc 67 entlst) ;图形在模型空间或图纸空间
  64.           center (assoc 10 entlst) ;圆心
  65.           r  (cdr (assoc 40 entlst)) ;半径
  66.           pro_x  (assoc 210 entlst) ;X轴拉伸方向
  67.           ) ;_ 结束setq
  68.     (entmake
  69.    (list
  70.      '(0 . "LWPOLYLINE")
  71.      '(100 . "AcDbEntity")
  72.      norm
  73.      '(410 . "Model")
  74.      '(100 . "AcDbPolyline")
  75.      '(90 . 3)
  76.      '(70 . 0)
  77.      '(43 . 0.0)
  78.      '(38 . 0.0)
  79.      '(39 . 0.0)
  80.      (list 10 (cadr center) (- (caddr center) r))
  81.      '(40 . 0.0)
  82.      '(41 . 0.0)
  83.      '(42 . 1.0)
  84.      '(91 . 0)
  85.      (list 10 (cadr center) (+ r (caddr center)))
  86.      '(40 . 0.0)
  87.      '(41 . 0.0)
  88.      '(42 . 1.0)
  89.      '(91 . 0)
  90.      (list 10 (cadr center)  (- (caddr center) r))
  91.      '(40 . 0.0)
  92.      '(41 . 0.0)
  93.      '(42 . 0.46903)
  94.      '(91 . 0)
  95.      pro_x
  96.       ) ;_ 结束list
  97.    );end entmake
  98. ) ;_ 结束defun
  99. (PRIN1)

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2020-3-28 20:33 | 显示全部楼层



本帖子中包含更多资源

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

x
发表于 2020-3-29 01:22 | 显示全部楼层
本帖最后由 magicheno 于 2020-3-29 01:26 编辑

感谢大神啊,很有用的~~~!!!   源码咋用不了
 楼主| 发表于 2020-3-29 07:57 | 显示全部楼层
magicheno 发表于 2020-3-29 01:22
感谢大神啊,很有用的~~~!!!   源码咋用不了

ssget->ename-list  这个函数自己写
发表于 2020-3-29 10:26 | 显示全部楼层
啊哦?都放出来吧。不会啊
发表于 2020-3-29 12:24 | 显示全部楼层
雨的节奏 发表于 2020-3-29 07:57
ssget->ename-list  这个函数自己写

写不来
 楼主| 发表于 2020-3-29 13:37 | 显示全部楼层

(defun ssget->ename-list (ss / i ename lst)
    (setq i -1)
    (while (setq ename (ssname ss (setq i (1+ i))))
      (setq lst (cons ename lst))
    )
    lst
  )
发表于 2020-3-29 21:51 | 显示全部楼层
PE M W.简单几个操作,不用上插件吧

点评

用PE大多数都能搞,可以的  发表于 2020-3-30 10:28
发表于 2020-3-31 09:15 | 显示全部楼层
搞那么复杂,为什么不用 (command "chprop" ) ???
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 19:22 , Processed in 0.169424 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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