找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1313|回复: 3

[编程申请] 请帮忙写一个将多段线局部加粗的工具

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-4-25 10:08:02 | 显示全部楼层 |阅读模式

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

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

×
今天处理个图,需要把多段线的局部段加粗,能不能写个代码能快点呢? 比如拾取多段线的两个顶点,顶点间的线段就按照指定的宽度加粗。谢谢!

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

已领礼包: 859个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-4-25 17:16:33 | 显示全部楼层
简单写了一个,WCS,UCS都测试了,见演示,请下载最新的API和通用LISP函数库。用了老大的API和通用LISP函数,代码很短

录像4_转.gif

  1. (defun c:tt ()
  2.   (if (not #XDTB_GLOBAL_VAR_JVBUJIACHU)
  3.      (setq #XDTB_GLOBAL_VAR_JVBUJIACHU 2.0)
  4.   )
  5.   (if (setq jc (getreal (xdrx_prompt "\n请输入局部加粗的宽度<" #XDTB_GLOBAL_VAR_JVBUJIACHU ">:" t)))
  6.      (setq #XDTB_GLOBAL_VAR_JVBUJIACHU jc)
  7.   )
  8.   (if (and
  9.         (setq e1 (xdrx_entsel "\n请在起始段附近拾取点<退出>:" '((0 . "*POLYLINE"))))
  10.         (setq p1 (trans (cadr e1) 1 0))
  11.         (setq inx1 (XD::Polyline:NearIndex (car e1) p1))
  12.         (xd::doc:drawcrosshair (xdrx_polyline_getpointat (car e1) inx1))
  13.         (setq e2 (xdrx_entsel "\n请在结束附近拾取点<退出>:" '((0 . "*POLYLINE"))))
  14.         (setq p2(trans (cadr e2) 1 0))
  15.         (setq inx2 (XD::Polyline:NearIndex (car e2) p2))
  16.         (setq inx2 (if (= inx1 inx2)(1+ inx1) inx2))
  17.         (xd::doc:drawcrosshair (xdrx_polyline_getpointat (car e2) inx2))
  18.         (setq e3 (xdrx_entsel "\n请拾取下两点的中间段<退出>:" '((0 . "*POLYLINE"))))
  19.         (setq p3 (trans (cadr e3) 1 0))
  20.         (equal (car e1) (car e2))
  21.         (equal (car e1) (car e3))
  22.       )
  23.     (progn
  24.       (setq inx12 (XD::Polyline:NearIndex (car e3) p3)
  25.             inx12 (if (and (= 1 (- inx2 inx1))(= inx12 inx2)) (1- inx12) inx12)
  26.             pnts (XD::Polyline:MidPntAtIndexs (car e1) inx1 inx2 inx12)
  27.             inxs (mapcar
  28.                    '(lambda (x)
  29.                       (XD::Polyline:NearIndex (car e1) x)
  30.                     )
  31.                    pnts
  32.                  )
  33.             dotpair (XD::List:SnakePair inxs)
  34.       )
  35.       (mapcar
  36.         '(lambda (x)
  37.            (xdrx_polyline_setWidthsAt (car e1) x #XDTB_GLOBAL_VAR_JVBUJIACHU #XDTB_GLOBAL_VAR_JVBUJIACHU)
  38.          )
  39.         (XD::List:RemoveTail inxs)
  40.       )
  41.     )
  42.   )
  43.   (if (not e3)
  44.      (princ "\n没有拾取到中间段,退出!")
  45.   )
  46.   (princ)
  47. )



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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2016-4-25 18:48:11 | 显示全部楼层
哇,试了代码,太完美了,谢谢N版,这有个帖子帮看看, http://bbs.xdcad.net/thread-704033-1-1.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 17:35 , Processed in 0.393080 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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