找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 957|回复: 5

[每日一码] 用grdraw函数在屏幕绘制矢量线

[复制链接]

已领礼包: 4个

财富等级: 恭喜发财

发表于 2021-5-25 16:09:33 | 显示全部楼层 |阅读模式

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

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

×
  1. (defun c:t2 (/ gr p0 pt)
  2.   (setq p0 (getpoint "指定起始点\n"))
  3.   (prompt "\n移动鼠标指定路径,按任意键结束。")
  4.   (while (and (setq gr (grread t 4 2))
  5.            (= (car gr) 5)
  6.          )
  7.     (setq pt (cadr gr))
  8.     (grdraw p0 pt 1)
  9.     (setq p0 pt)
  10.   )
  11.   (princ)
  12. )


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

已领礼包: 756个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 914个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 146个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

 楼主| 发表于 2021-5-27 09:01:01 | 显示全部楼层

用grread,grdraw,nentselp函数,'SetXData方法给模板编号

  1. (defun c:gl (/ *error*_bak ang bignum ccolor clayer color ctextstyle dwg ename gr layer mspace ob ob+co_list obj osmode smallnum str text textnew)
  2.   (vl-load-com)
  3.   (setq *error*_bak *error* *error* *error*_yy
  4.     dwg (vla-get-ActiveDocument (vlax-get-acad-object))
  5.     mspace (vla-get-ModelSpace dwg)
  6.     ctextstyle (getvar "TEXTSTYLE")
  7.     clayer (getvar "CLAYER")
  8.     ccolor (getvar "CECOLOR")
  9.     osmode (getvar "OSMODE")
  10.   )
  11.   (setvar "CECOLOR" "1")
  12.   (setvar "OSMODE" 0)
  13.   (SetTextStyle dwg 35 0.8)
  14.   (setq bignum (car (entsel "\n拾取大编号\n")))
  15.   (while (or (not bignum)
  16.            (null (vlax-property-available-p (setq ob (vlax-ename->vla-object bignum)) 'TextString))
  17.            (/= (vlax-get-property ob 'Layer) "大编号")
  18.          )
  19.     (setq bignum (car (entsel "拾取大编号\n")))
  20.   )
  21.   (setq smallnum (getint "输入起始值<1>:\n"))
  22.   (prompt "\n开始编号,并关联模板\n鼠标左键指定编号插入点,鼠标右键或键盘任意键结束\n")
  23.   (if (null smallnum) (setq smallnum 1))
  24.   (setq text (strcat (vlax-get-property (vlax-ename->vla-object bignum) 'TextString) "-"))
  25.   (while (and (setq gr (grread t 4 2))
  26.            (or (= (car gr) 5) (= (car gr) 3))
  27.          )
  28.     (if (setq ename (car (nentselp (cadr gr))))
  29.       (progn
  30.         (setq obj (vlax-ename->vla-object ename))
  31.         (if (= (vlax-get-property obj 'ObjectName) "AcDbText")
  32.           (progn
  33.             (setq layer (vlax-get-property obj 'Layer)
  34.               str (vlax-get-property obj 'TextString)
  35.               color (vlax-get-property obj 'Color)
  36.               ang (vlax-get-property obj 'Rotation)
  37.               ob+co_list (cons (list obj color) ob+co_list)
  38.             )
  39.             (if (and (= layer "模板") (/= color 8)
  40.                   (null (vl-string-search "EC" str))
  41.                 )
  42.               (progn
  43.                 (vlax-put-property obj 'Color 8)
  44.                 (setq textnew (strcat text (itoa smallnum)))
  45.                 (vlax-put-property
  46.                   (vlax-invoke-method mspace 'AddText
  47.                     textnew
  48.                     (vlax-3D-point (getpoint))
  49.                     (vlax-make-variant 35 vlax-vbDouble)
  50.                   )
  51.                   'Rotation
  52.                   (vlax-make-variant ang vlax-vbDouble)
  53.                 )
  54.                 (vlax-invoke-method obj 'SetXData
  55.                   (vlax-safearray-fill
  56.                     (vlax-make-safearray
  57.                       vlax-vbInteger
  58.                       '(0 . 1)
  59.                     )
  60.                     '(1001 1000)
  61.                   )
  62.                   (vlax-safearray-fill
  63.                     (vlax-make-safearray
  64.                       vlax-vbVariant
  65.                       '(0 . 1)
  66.                     )
  67.                     (list "yy" textnew)
  68.                   )
  69.                 )
  70.                 (setq smallnum (1+ smallnum))
  71.               )
  72.             )
  73.           )
  74.         )
  75.       )
  76.     )
  77.   )
  78.   (foreach x (DeleteSameAtom ob+co_list)
  79.     (vlax-put-property (car x) 'Color (cadr x))
  80.   )
  81.   (setvar "TEXTSTYLE" ctextstyle)
  82.   (setvar "CLAYER" clayer)
  83.   (setvar "CECOLOR" ccolor)
  84.   (setvar "OSMODE" osmode)
  85.   (vlax-release-object dwg)
  86.   (vlax-release-object mspace)
  87.   (vlax-release-object ob)
  88.   (vlax-release-object obj)
  89.   (prompt "\n编号结束")
  90.   (princ)
  91. )

  92. (defun *error*_yy (msg)
  93.   (setq *error* *error*_bak)
  94.   (foreach x (DeleteSameAtom ob+co_list)
  95.     (vlax-put-property (car x) 'Color (cadr x))
  96.   )
  97.   (setvar "TEXTSTYLE" ctextstyle)
  98.   (setvar "CLAYER" clayer)
  99.   (setvar "CECOLOR" ccolor)
  100.   (setvar "OSMODE" osmode)
  101.   (prompt "\n编号结束")
  102.   (princ msg)
  103. )

  104. ;;;删除表内重复元素
  105. ;(DeleteSameAtom '(1 1 2 2 3))
  106. (defun DeleteSameAtom(a / aa)
  107.   (foreach tt a
  108.     (if (null (member tt aa))
  109.       (setq aa (append aa (list tt)))
  110.     )
  111.   )
  112.   aa
  113. )

  114. ;设置编号将要使用的文字样式(_宋体)、和图层(小编号)
  115. (defun SetTextStyle (dwg height wid / layer layers style styles)
  116.   (setq styles (Vlax-Get dwg 'TextStyles)
  117.     layers (Vlax-Get dwg 'Layers)
  118.   )
  119.   (if (null (tblsearch "style" "_宋体"))
  120.     (progn
  121.       (setq style (vlax-invoke-method styles 'add "_宋体"))
  122.       (vlax-invoke-method style 'SetFont "宋体" :vlax-false :vlax-false 1 0)
  123.     )
  124.   )
  125.   (if (null (tblsearch "layer" "小编号"))
  126.     (setq layer (vlax-invoke-method layers 'add "小编号"))
  127.   )
  128.   (setq style (vla-Item styles "_宋体"))
  129.   (vlax-put-property style 'height (vlax-make-variant height 5))
  130.   (vlax-put-property style 'Width (vlax-make-variant wid 5))
  131.   (vlax-release-object styles)
  132.   (vlax-release-object style)
  133.   (setvar "CLAYER" "小编号")
  134.   (setvar "TEXTSTYLE" "_宋体")
  135. )

实例一

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 02:48 , Processed in 0.379673 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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