明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xj6019

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

[复制链接]
 楼主| 发表于 2019-11-21 11:59:42 | 显示全部楼层
上面的截图 是运行下面的代码   这只是 试了一下    其他所有的v函数都显示类似的错误   有时候末尾的英文不同   前面都一样的



(princ "\n程序:统计线段长度 命令:zz")
(defun C:zz (/ CURVE TLEN SS N SUMLEN)
(vl-load-com)
(setq SUMLEN 0)
(setq SS (ssget '((0 . "CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC"))))
(setq N 0)
(repeat (sslength SS)
(setq CURVE (vlax-ename->vla-object (ssname SS N)))
(setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE)))
(setq SUMLEN (+ SUMLEN TLEN))
(setq N (1+ N))
)
(princ (strcat "\n共选择 " (itoa (sslength SS)) " 条线段,线段总长:" (rtos SUMLEN 2 0) "毫米。"))
(princ)
)
发表于 2019-11-21 13:00:32 | 显示全部楼层
AutoCAD R14!?
 楼主| 发表于 2019-11-21 13:32:00 | 显示全部楼层

不是啊   cad2018
 楼主| 发表于 2019-11-21 21:20:45 | 显示全部楼层
e2002 发表于 2019-11-21 09:46
你简单写段代码就实现了你的要求
1. 获取选择集 ss
2. 获取边界范围角点坐标 pt_ll , pt_rt

您好 ,lisp我是菜鸟中的菜鸟,就会用用,不会写哦,好不好麻烦您抽点时间  弄一下啊   谢谢了
发表于 2019-11-26 11:15:25 | 显示全部楼层
xj6019 发表于 2019-11-21 11:57
我看代码里面也有这一段    逛论坛的时候有人说 加上这段 v函数就能运行  可是我的电脑就是不行    完全不 ...

你用的是精简版CAD
发表于 2019-11-26 13:28:49 | 显示全部楼层
本帖最后由 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-26 19:42:07 | 显示全部楼层
本帖最后由 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:00 | 显示全部楼层
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 20:17:35 | 显示全部楼层
xj6019 发表于 2019-11-26 20:07
谢谢 功能实现了   就是最后能默认为不保留吗     或者直接不询问也行  默认就不保留就可以
或者能不能 ...

自已动手,要学会搜索,善用搜索
 楼主| 发表于 2019-11-26 20:23:21 | 显示全部楼层
maiko 发表于 2019-11-26 20:17
自已动手,要学会搜索,善用搜索

不好意思  麻烦帮我弄弄吧   我想法改过了  不行啊   运行不了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 03:50 , Processed in 0.167782 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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