找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 628|回复: 1

[求助] [求助]:如何实现以下几个效果?

[复制链接]
发表于 2002-12-26 15:12:30 | 显示全部楼层 |阅读模式

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

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

×
首先,多谢各位!
用LISP语言在AUTO2002中,如何实现以下几个效果?
1.将用BREAK命令打断的二线连接起来?
2.如何实现以下图示有三个效果?
3.如何将关闭的层和未关闭的层进行反转? 如何将锁定的层和未锁定的层进行反转?
4.在AUTO2002中,F8或是CTRL+“L”是正交命令,如何用一键实现这个命令?
5.另外,哪里有关于LISP语言的书最好是结合例子讲解的。哪里有关于VBA编程的书最好是结合例子讲解的。
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-12-27 09:18:43 | 显示全部楼层
1.比较容易,寻找线1的两端点,寻找线2的两端点,可对端点进行1,2,3,4的排序,取1,4端点(比如非y方向直线可按x坐标排序),将原二直线去掉,更新新直线则可。
2。这个网上有一个程序,贴给你看看
(defun c:bmtr( / sp ep set1 entb  tl i ptb1 ptb2 newtb1 newtb2 set
                 stt cx_er cx_oe cx_oc gg ppp1 ppp2  ul)
   (defun cx_er(msg)
     (if (/= msg "Function cancelled")
       (if (= msg "quit / exit abort")
         (princ)  
         (princ (strcat "\n error :" msg))
       )
       (progn (setvar "osmode" gg) (princ))
     )
     (if cx_oe (setq *error* cx_oe))        
     (setvar "cmdecho" 0)
     (princ)
   )
   (if *error*
     (setq cx_oe *error* *error* cx_er)
     (setq *error* cx_er)
   )
   (princ "\nThancks For Using Me! ver(8.0)")
   (princ "\nCopyright By CX---1996.4.")
   (princ "\n本程序快捷键为 bmtr !\n")
   (setvar "CMDECHO" 0)
   (setq gg (getvar "osmode"))
   (setvar "osmode" 0)
   (setq sp (getpoint "\n First Corner Point of Window:"))
   (setq ep (getcorner sp "\n Other Corner Point:"))
   (setvar "osmode" gg)
   ;(setq ul (ssadd))  
   (setq set1 (ssadd))
   (setq ul (ssget "C" sp ep))   
   (if (not ul)
       (exit)
   )              
   (l_layer)   
   (ver_line)
   ;(setq ul (pplayer ul))
   (setq tl (in_w ul sp ep))         
   (if (/= 0 (sslength tl))
     (progn
       (setq set1(sub_set ul tl))     
       (int2 tl)     
       (int1 tl)   
       (setq i 0)           
       (while (< i (sslength newtb2))
         (ssadd (ssname newtb2 i) newtb1)
         (setq i (1+ i))
       )
       (setq ptb1 (reverse ptb1))
       (setq ptb2 (append ptb1 ptb2))
     )
     (int3 ul)
   )                       
   (if (/= 0 (sslength newtb1))
     (progn
       (setq i 0)
       (while (< i (sslength newtb1))
         (setq stt nil)
         (setq stt(ssadd))
         (ssadd (ssname newtb1 i) stt)
         (setq ppp1 (nth (* 2 i) ptb2))
         (setq ppp2(nth (+ 1 (* 2 i)) ptb2))
         (command "break"stt ppp1 ppp2)
         (setq i (1+ i))
       )
     )
   )
)

存为lsp,打bmtr则可
3。也不难,搜索所有的层,得其状态,反转则可
4。到网上找autohook2k以上版本则可
5。仁者见仁,智者见智
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 02:35 , Processed in 0.185327 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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