找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 674|回复: 5

[每日一码] 动态修改线型比例

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2021-1-19 10:56:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
dynamictlscale.gif

  1. ;;; dynamic  by qjchen@gmail.com
  2. ;;; The mail idea come from eachy master:  http://eachy.bokee.com/5731665.html
  3. ;;; http://www.xdcad.net/forum/showthread.php?postid=1534283

  4. (defun C:test ( / dcl_id dclcontent dclname userclick temp)
  5.   (vl-load-com)
  6.   (setq temp (getvar "cmdecho"))
  7.   (setvar "cmdecho" 0)
  8.   (command "undo" "be")
  9.   (setq dclcontent (list
  10.            "qjchenedynamicltscale:dialog{"
  11.            "label=\"dynamic linetype scale modify by qjchen\";"
  12.            ":button{"
  13.                 "key = \"button1\";"
  14.                 "label = \"individual object ltscale\";}"
  15.            ":button{"
  16.                 "key = \"button2\";"
  17.                 "label = \"overall ltscale\";}"
  18.            "ok_cancel;}")
  19.   dclname "qjchendltscale"
  20.   )
  21.   (setq dcl_id (load_dialog (qjchencreatdcl dclname dclcontent)))
  22.   (if (not (new_dialog "qjchenedynamicltscale" dcl_id)) (exit))
  23.   (action_tile "button1" "(done_dialog 3)")
  24.   (action_tile "button2" "(done_dialog 4)")
  25.   (setq userclick (start_dialog))
  26.   (unload_dialog dcl_id)
  27.   (cond ((= 3 userclick)(qjchenedltscale 1))
  28.         ((= 4 userclick)(qjchenedltscale 2))
  29.   )
  30.   (command "undo" "e")
  31.   (setvar "cmdecho" temp)
  32. )

  33. (defun qjchenedltscale(n / a b gr linetype newscale o orilst overallltscale zq)
  34.   (prompt "\n Please select one not continuous linetype object:")
  35.   (setq a (car (entsel)) o (vlax-ename->vla-object a))
  36.   (setq orilst (vlax-get-property o 'LinetypeScale))
  37.   (setq linetype (cdr (assoc 6 (entget a))))
  38.   (if (= linetype nil)
  39.       (setq linetype (cdr (assoc 6 (tblsearch "layer" (cdr (assoc 8 (entget a)))))))
  40.   )
  41.   (if (and linetype (/= linetype "Continuous"))
  42.     (progn
  43.       (setq zq (cdr (assoc 40 (tblsearch "ltype" linetype))))
  44.       (setq overallltscale (getvar "LTSCALE"))
  45.       (setq b (getpoint "\nSelect one point:"))
  46.       (while (= (car (setq gr (grread nil 5 0))) 5)
  47.         (redraw)
  48.         (grdraw (cadr gr) b 1 1)
  49.         (setq newscale (/ (distance (cadr gr) b) zq overallltscale))
  50.         (apply-props o (list (list "LinetypeScale" newscale)))
  51.       )
  52.       (if (= n 2)
  53.         (progn
  54.           (setvar "ltscale" (* overallltscale (/ newscale orilst)))
  55.           (apply-props o (list (list "LinetypeScale" orilst)))
  56.           (command "regen")
  57.         )
  58.       )
  59.     )
  60.   )
  61.   (vlax-release-object o)
  62.   (princ)
  63. )

  64. ;;from dave theswamp
  65. (defun apply-props (object proplist)
  66.   (foreach prop proplist
  67.     (if (vlax-property-available-p object (car prop))
  68.       (vlax-put-property object (car prop) (cadr prop))
  69.     )
  70.   )
  71. )

  72. (defun qjchencreatdcl(dclname lst)
  73. (setq dcl_name (strcat (getenv "temp") "\\" dclname ".dcl")
  74.         f (OPEN dcl_name "w")
  75.   )
  76.   (foreach x lst
  77.      (write-line x f)
  78.    )
  79.   (close f)
  80.   dcl_name
  81. )

  82. ;;end main program
  83. (princ "\n By qjchen@gmail.com, dynamic linescale, The command is test")
  84. (princ)

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6202个

财富等级: 富甲天下

发表于 2021-1-19 15:16:38 | 显示全部楼层
这个工具不错,谢谢楼主的分享!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 282个

财富等级: 日进斗金

发表于 2021-1-19 15:39:50 | 显示全部楼层
很直观,谢谢分享!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2021-1-20 11:23:14 | 显示全部楼层
谢谢楼主的分享!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2021-1-21 10:50:14 | 显示全部楼层
跟大神学习学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

发表于 2021-1-26 11:23:45 | 显示全部楼层
大佬插件效果很好,就是不知道命令是怎么调出来的?是“test”么,怎么调不出来gif上对话框呢?求帮助
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-19 22:01 , Processed in 0.378053 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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