明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2164|回复: 7

镜像点集

[复制链接]
发表于 2012-4-15 15:21:22 | 显示全部楼层 |阅读模式
  1. ;;; ==================================================================
  2. (defun th-per (pt obj / pt2 dist)
  3.   (if (and
  4.         pt
  5.         obj
  6.       )
  7.     (setq dist
  8.            (distance pt
  9.                      (setq pt2 (vlax-curve-getclosestpointto obj pt t))
  10.            )
  11.     )
  12.   )
  13.   pt2
  14. )
  15. ;;; ==================================================================
  16. (defun txt-mkline (p1 p2 / ent)
  17.   (if (setq ent        (entmakex (list        '(0 . "LINE")
  18.                                 '(100 . "AcDbEntity")
  19.                                 '
  20.                                  (100 . "AcDbLine")
  21.                                 (cons 10 p1)
  22.                                 (cons 11 p2)
  23.                                 '
  24.                                  (210 0. 0. 1.)
  25.                           )
  26.                 )
  27.       )
  28.     ent
  29.   )
  30. )
  31. ;;; ==================================================================
  32. (defun th-ptlst-mirror (ptlst pt1 pt2 / e lst lst1 lst2 lst3)
  33.   (setq e (txt-mkline pt1 pt2))
  34.   (setq        lst (mapcar
  35.               (function        (lambda        (P)
  36.                           (th-per p e)
  37.                         )
  38.               )
  39.               ptlst
  40.             )
  41.   )
  42.   (entdel e)
  43.   (setq        lst1 (mapcar
  44.                (function (lambda (x0 x1)
  45.                            (- (* 2 x0) x1)
  46.                          )
  47.                )
  48.                (mapcar
  49.                  (function car)
  50.                  lst
  51.                )
  52.                (mapcar
  53.                  (function car)
  54.                  ptlst
  55.                )
  56.              )
  57.   )
  58.   (setq        lst2 (mapcar
  59.                (function (lambda (x0 x1)
  60.                            (- (* 2 x0) x1)
  61.                          )
  62.                )
  63.                (mapcar
  64.                  (function cadr)
  65.                  lst
  66.                )
  67.                (mapcar
  68.                  (function cadr)
  69.                  ptlst
  70.                )
  71.              )
  72.   )
  73.   (setq        lst3 (mapcar
  74.                (function (lambda (x y)
  75.                            (list x y)
  76.                          )
  77.                )
  78.                lst1
  79.                lst2
  80.              )
  81.   )


  82. )
  83. ;;; ==================================================================

评分

参与人数 1明经币 +1 收起 理由
yoyoho + 1 赞一个!

查看全部评分

发表于 2012-4-15 15:55:53 | 显示全部楼层
感谢TANER 分享!
发表于 2012-4-28 21:46:27 | 显示全部楼层
4分之一可以使用它吧
 楼主| 发表于 2012-10-24 09:56:12 | 显示全部楼层
本帖最后由 TANER 于 2012-10-24 09:56 编辑

这个更简洁,抄来的哦!
  1. (DEFUN T2-PTLST-MIRROR (PL P1 P2 / MANG)
  2.   (SETQ MANG (* 2 (ANGLE P1 P2)))
  3.   (MAPCAR
  4.     '(LAMBDA (P)
  5.        (POLAR P1 (- MANG (ANGLE P1 P)) (DISTANCE P1 P))
  6.      )
  7.     PL
  8.   )
  9. )
复制代码

发表于 2012-10-27 18:08:15 | 显示全部楼层
楼主的分享精神

让人值得学习
发表于 2012-10-28 10:40:36 | 显示全部楼层
赞一个!!
发表于 2012-10-28 10:52:12 | 显示全部楼层

  1. ;; 伪源码需要e派工具箱(XCAD)的支持
  2. (defun PtnMirror (ptn p1 p2)
  3.   (mapcar '(lambda (x) (xyp-Point-MirrorWith2pt x p1 p2)) ptn)
  4. )
发表于 2012-10-28 21:15:29 | 显示全部楼层
hao
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-26 03:14 , Processed in 0.195814 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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