明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1277|回复: 20

[提问] lisp 能实现沿着45度 镜像吗,询问是否保留,不保留直接空格

[复制链接]
发表于 2019-11-20 20:01 | 显示全部楼层 |阅读模式
      能实现沿着45度 镜像吗,询问是否保留,不保留直接空格,画墙板,施工图给的都是主视图,但是墙板出加工图的时候需要从背面画,所有每个板都要转换方向,以前一直是先旋转90度,然后水平镜像,后来发现直接45度镜像就可以,不知道lisp能直接一键生成吗
    镜像的一个点可以选在框选对象的最右下角,然后沿着45度镜像,镜像后留个选择选项,保留B   不保留直接空格

期待高手们能给解答一下,电脑不能运行vl函数,忘体谅,谢谢了!!!!!
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2019-11-26 19:42 | 显示全部楼层
本帖最后由 maiko 于 2019-11-26 19:48 编辑

;加个执行完后自动回原变量
(defun c:dng ( / *error* s p var val )
  (defun *error* ( msg )
    (mapcar '(lambda ( a b ) (if b (setvar a b))) var val)
    (if (and msg (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*")))
      (princ (strcat "\nError: " msg))
    )
    (princ)
  )
  (if (setq s (ssget))
    (if (setq p (getpoint "\n指定点"))
      (progn
        (setq var '(osmode snapang) val (mapcar 'getvar var))
        (mapcar '(lambda ( a b c ) (if a (setvar b c))) val var (list 0 (* 45 (/ pi 180))))
        (command "mirror" s "" p pause pause)
      )
    )
  )
  (*error* nil)
)
 楼主| 发表于 2019-11-26 20:07 | 显示全部楼层
maiko 发表于 2019-11-26 19:42
;加个执行完后自动回原变量
(defun c:dng ( / *error* s p var val )
  (defun ...

谢谢 功能实现了   就是最后能默认为不保留吗     或者直接不询问也行  默认就不保留就可以
或者能不能像下面一样  这个我还能看的懂   知道改一下N  Y就能控制保留不保留,你的这个代码 我看不懂,要改也不知道怎么下手,莫笑哦   水平太次了
(defun c:hg( / &kw @p1 @p2)
(setq &kw (ssget))
(if (/= &kw nil) (setq @p1 (getpoint "\第一鏡像点")) )
(if (/= @p1 nil) (setq @p2 (getpoint @p1 "\第二鏡像点 ")) )
(if (/= @p2 nil)
(command "mirror" &kw "" @p1 @p2 "Y")
)
(prin1)
)
发表于 2019-11-26 13:28 | 显示全部楼层
本帖最后由 lee50310 于 2019-11-26 13:43 编辑

(游標旋轉45+鏡射)
執行指令:dng

(恢復正常游標)
執行指令:undng

;----------------------------------------------------
;;游標轉45度+鏡射
(defun c:dng (/ u ang pt1)
  (setq u (/ pi 180))
  (setq ang (* 45 u))
  (setvar "snapang" ang)  ;游標轉45度
  (setq en (entsel))      ;選擇物體
  (setq pt1 (getpoint "\指定鏡射線的第一點:" ))
  (command "mirror" en "" pt1 PAUSE PAUSE)
  (princ)
)

;;恢復正常游標
(defun c:undng ()
   (setvar "snapang" 0)  ;游標恢復正常
)
;-------------------------------------------

本帖子中包含更多资源

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

x
发表于 2019-11-21 09:46 | 显示全部楼层
你简单写段代码就实现了你的要求
1. 获取选择集 ss
2. 获取边界范围角点坐标 pt_ll , pt_rt
3. 直接调用command,mirror, 以pt_ll, pt_rt 连线为对称轴,选择删除原对象。

循环1-3...
 楼主| 发表于 2019-11-21 11:02 | 显示全部楼层
不好意思   我对代码不懂   所以只能希望老师们给个解决方案呢    您可以帮弄弄吗   谢谢了
发表于 2019-11-21 11:11 | 显示全部楼层
为啥不能使用vl函数?
发表于 2019-11-21 11:41 来自手机 | 显示全部楼层
可以看看我的十分镜像
 楼主| 发表于 2019-11-21 11:49 | 显示全部楼层
我自己也不知道为什么  加载后  都不能运行  看着那英文 好像是缺啥东西  我也不知道是啥  无从下手的感觉  如果知道缺什么东西   下载一个安装了也行啊
发表于 2019-11-21 11:50 | 显示全部楼层
缺少院长的 xcad.vlx
 楼主| 发表于 2019-11-21 11:55 | 显示全部楼层
就显示这个

本帖子中包含更多资源

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

x
发表于 2019-11-21 11:57 来自手机 | 显示全部楼层
最前面加一句 (vl-load-com)
 楼主| 发表于 2019-11-21 11:57 | 显示全部楼层
我看代码里面也有这一段    逛论坛的时候有人说 加上这段 v函数就能运行  可是我的电脑就是不行    完全不知道怎么回事啊

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-4-20 15:46 , Processed in 0.443514 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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