明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2367|回复: 4

[源码] 偏移多段线的一段--思路简单明了--资源共享,反对收币!

[复制链接]
发表于 2013-11-27 15:23:39 | 显示全部楼层 |阅读模式
本帖最后由 958620832 于 2013-11-27 15:41 编辑

(defun getvp (p0 p1 p2 / r12 r0 p3) ;求垂点
  (setq r12 (angle p1 p2) r0 (+ r12 (angtof "90")) p3 (polar p0 r0 1.0))
  (inters p1 p2 p0 p3 nil))

(defun getep (obj / p1 p p2) ;求端点,obj由(entsel)取得
  (setq ename (car obj) p0 (cadr obj))
  (setq p1 (osnap p0 "end") p (osnap p0 "mid") p2 (mapcar '(lambda (x y) (- (* 2 x) y)) p p1))
  (list p1 p2))

;偏移多义线的一段,也可偏移直线,不用判断。其他类型,由于本人实际工作中用不着,没有考虑,有需要的可以予以改编,思路类似。
(defun c:oo ()
  (or dis1_oo (setq dis1_oo 1000))
  (princ (strcat "\n指定偏移距离<" (rtos dis1_oo) ">:"))
  (setq dis2_oo (getdist))
  (if dis2_oo (setq dis1_oo dis2_oo) (setq dis2_oo dis1_oo))
  (while (setq obj (entsel "\n选择要偏移的对象:"))
    (setq p (getpoint "\n指定点以确定偏移所在一侧:"))
    (setq p1 (car (getep obj)) p2 (cadr (getep obj))) ;求端点
    (setq p0 (getvp p p1 p2)) ;求垂点
    (setq ang (angle p0 p) p3 (polar p1 ang dis2_oo) p4 (polar p2 ang dis2_oo))
    (setq ent (entget (car obj)))
    (setq ys (if (assoc 62 ent) (cdr (assoc 62 ent)) 256) xx (if (assoc 6 ent) (cdr (assoc 6 ent)) "bylayer")
      bl (if (assoc 48 ent) (cdr (assoc 48 ent)) 1) kd (if (assoc 40 ent) (cdr (assoc 40 ent))) ty (cdr (assoc 0 ent)))
    (if (= ty "LINE")
     (entmake (list '(0 . "LINE") (cons 10 p3) (cons 11 p4) (cons 62 ys) (cons 6 xx) (cons 48 bl)))
     (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline")
       (cons 90 2) (cons 10 p3) (cons 10 p4) (cons 62 ys) (cons 6 xx) (cons 48 bl) (cons 43 kd)))))
  (princ))

发表于 2013-11-27 18:07:52 | 显示全部楼层
谢谢楼主的分享!运行效果良好,收藏备用。
发表于 2013-12-2 14:22:58 | 显示全部楼层
资源共享,反对收币!
发表于 2013-12-2 16:28:44 | 显示全部楼层
感谢 958620832 楼主分享程序!
发表于 2014-5-10 06:29:44 | 显示全部楼层
不错的源码,辛苦了,新手向楼主学习一下~附件为效果

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-15 13:43 , Processed in 0.188968 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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