找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1609|回复: 8

[点表] (XD::Pnts:ToBox)点表生成沿着连城多段线方向上指定X,Y偏移的多边形点表

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-4-12 20:51:15 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Pnts:ToBox
调用格式: (XD::Pnts:ToBox pts h1 w1)
参数说明: pts ----- 点表
h1 ----- 垂直连线方向的偏移距离
w1 ----- 连线方向的偏移距离
返回值: 点表
函数简介: 点表生成沿着连城多段线方向上指定X,Y偏移的多边形点表
函数来源: 原创
函数作者: newer
适用版本: XDRX API 
最后更新时间: 2020-04-12
备注: -
演示图片:

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

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

×
本帖最后由 newer 于 2020-4-12 20:53 编辑

  1. (defun XD::Pnts:ToBox (pts h1 w1 / _temp pts1 pts2)
  2.   (defun _temp (pts / pts1)
  3.     (setq pts1 (cons (mapcar '+
  4.                              (car pts)
  5.                              (xdrx-vector-product
  6.                                (xdrx-vector-normalize
  7.                                  (mapcar '- (car pts) (cadr pts))
  8.                                )
  9.                                w1
  10.                              )
  11.                      )
  12.                      pts
  13.                )
  14.           pts1 (append
  15.                  pts1
  16.                  (list (mapcar '+
  17.                                (last pts1)
  18.                                (xdrx-vector-product
  19.                                  (xdrx-vector-normalize
  20.                                    (mapcar '-
  21.                                            (last pts1)
  22.                                            (nth (- (length pts1) 2) pts1)
  23.                                    )
  24.                                  )
  25.                                  w1
  26.                                )
  27.                        )
  28.                  )
  29.                )
  30.     )
  31.   )
  32.   (setq h1 (abs h1))
  33.   (setq        pts1 (xdrx-points-offset h1 pts)
  34.         pts2 (xdrx-points-offset (- h1) pts)
  35.   )
  36.   (if (or (= (type w1) 'int) (= (type w1) 'real))
  37.     (progn (setq w1   (abs w1)
  38.                  pts1 (_temp pts1)
  39.                  pts2 (_temp pts2)
  40.            )
  41.     )
  42.   )
  43.   (append pts1 (reverse pts2))
  44. )


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

使用道具 举报

已领礼包: 217个

财富等级: 日进斗金

发表于 2020-4-16 09:02:52 | 显示全部楼层
老大这个出错是什么原因?
QQ截图20200416090122.png

点评

什么版本CAD? 你怎么操作的,代码? 上传下你的图  详情 回复 发表于 2020-4-16 10:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2020-4-16 10:02:13 | 显示全部楼层
knife0930 发表于 2020-4-16 09:02
老大这个出错是什么原因?

什么版本CAD?
你怎么操作的,代码?
上传下你的图

点评

老大,我的是CAD2014,是参数h1,w1的数值大于120就会出错,小于120没有问题。是不是要设置晓东里的哪个参数?  详情 回复 发表于 2020-4-16 11:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 217个

财富等级: 日进斗金

发表于 2020-4-16 11:11:52 | 显示全部楼层
newer 发表于 2020-4-16 10:02
什么版本CAD?
你怎么操作的,代码?
上传下你的图

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2020-4-16 11:27:29 | 显示全部楼层
knife0930 发表于 2020-4-16 11:11
老大,我的是CAD2014,是参数h1,w1的数值大于120就会出错,小于120没有问题。是不是要设置晓东里的哪个 ...

肯定根你的图形有关了,你试试把线画出来,然后用CAD的OFFSET命令,看看用你的数值能正确偏移不?

点评

这位老大帮我看看,选择一个文字,获取文字外框偏移200的点表。我是菜鸟,谢谢 (defun c:nn() (setq en (entsel)) (setq pnts (XD::Text:Box (car en))) (setq newpnts (XD::Pnts:ToBox pnts 200 200))  详情 回复 发表于 2020-4-16 11:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 217个

财富等级: 日进斗金

发表于 2020-4-16 11:56:04 | 显示全部楼层
Lisphk 发表于 2020-4-16 11:27
肯定根你的图形有关了,你试试把线画出来,然后用CAD的OFFSET命令,看看用你的数值能正确偏移不?

这位老大帮我看看,选择一个文字,获取文字外框偏移200的点表。我是菜鸟,谢谢
(defun c:nn()               
        (setq en (entsel))
        (setq        pnts (XD::Text:Box (car en)))       
        (setq        newpnts (XD::Pnts:ToBox pnts 200 200))       
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2020-4-16 14:38:54 | 显示全部楼层
本帖最后由 Lisphk 于 2020-4-16 14:50 编辑
knife0930 发表于 2020-4-16 11:56
这位老大帮我看看,选择一个文字,获取文字外框偏移200的点表。我是菜鸟,谢谢
(defun c:nn()               
        (setq ...

函数偏移是要内,外都偏移的, 你要是文字的框,如果你文字高度小于200, 你往内部是偏移不了200的,自己用CAD画,然后往里面OFFSET试试
你取个比文字高度小于一半的值去试试
,比如50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2020-4-16 14:59:46 | 显示全部楼层
knife0930 发表于 2020-4-16 11:56
这位老大帮我看看,选择一个文字,获取文字外框偏移200的点表。我是菜鸟,谢谢
(defun c:nn()               
        (setq ...

修改下你的代码
  1. (defun c:nn ()
  2.   (if (and (setq h (getreal "\n偏移值<退出>:"))
  3.            (setq en (car (entsel)))
  4.       )
  5.     (progn (setq pnts (XD::Text:Box en))
  6.            (setq newpnts (XD::Pnts:ToBox pnts h h))
  7.            (xdrx-polyline-make newpnts t)
  8.            (xdrx-setpropertyvalue (entlast) "color" 1)
  9.            (sssetfirst nil (ssget "l"))
  10.     )
  11.   )
  12.   (princ)
  13. )



字高200下,偏移30的结果

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 08:24 , Processed in 0.366507 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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