找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: ll_j

[原创]:Autolisp编程心得(有"心得"别忘了往里面贴,加币&分!)

[复制链接]
发表于 2004-12-10 22:40:30 | 显示全部楼层
看到各位高手的程序,顿生自惭形秽的感觉。
我编写的程序是太简单了,难登大雅。
我是下了好大的决心才敢贴的。

八分圆点
           ;这是一个透明命令,请在AUTOCAD要求捕捉点时,键入 (p8) 即可使用
              来捕捉八分圆点.
(defun p8 (/ a e1 p1 p2 r ang)
            (setq os (getvar "osmode"))
             (setvar "osmode" 0)
            (setq a (entsel "\nof"))
            (setq e1 (cdr (assoc '0 (entget (car a)))))
                    (progn
                           (setq p1 (cadr a))
                           (setq p2 (cdr (assoc '10 (entget (car a)))))
                           (setq r (cdr (assoc '40 (entget (car a)))))
                           (setq ang (angle p2 p1))
                           (progn  ( if (< ang (/ pi 8)) (setq ang1 0))
                                 ( if (and (> ang (/ pi 8))(< ang (* (/ pi 8) 3))) (setq ang1 (/ pi 4)))
                                 ( if (and (> ang (* (/ pi 8) 3))(< ang (* (/ pi 8) 5))) (setq ang1 (/ pi 2)))
                                 ( if (and (> ang (* (/ pi 8) 5))(< ang (* (/ pi 8) 7))) (setq ang1 (* (/ pi 4) 3)))
                                 ( if (and (> ang (* (/ pi 8) 7))(< ang (* (/ pi 8) 9))) (setq ang1 pi))
                                 ( if (and (> ang (* (/ pi 8) 9))(< ang (* (/ pi 8) 11))) (setq ang1 (* (/ pi 4) 5)))
                                 ( if (and (> ang (* (/ pi 8) 11))(< ang (* (/ pi 8) 13))) (setq ang1 (* (/ pi 2) 3)))
                                 ( if (and (> ang  (* (/ pi 8) 13))(< ang (* (/ pi 8) 15))) (setq ang1 (* (/ pi 4) 7)))
                                 ( if  (> ang (* (/ pi 8) 15)) (setq ang1 0))
                                 )   
                          (setq e1 nil)
                          (command (polar p2 ang1 r))
                    )  
                    (setvar "osmode" os)
              (print)
             )


我说一下我做程序的心得吧
1.学为所用,工作之中的困难和不便,应该来写程序。
2.每个函数的意义和用法,要熟悉。
3.编写过程中遇到困难,可想第二个途径。
4.程序完成后,要多听使用者的反馈意见。
5.辛苦完成的作品,也要舍的修改。甚至放弃。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-15 23:31:34 | 显示全部楼层
46楼楼主程序似曾相识,好像在那本书上见过。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-16 11:51:35 | 显示全部楼层
最初由 iVox 发布
[B]我说几个心得:

我的程序可以记住用户输入的Pline宽度,并作为下一次运行的缺省值;而那个被淘汰的程序则需要每次都输入线宽。
... [/B]


那位大虾教教我,如何记忆参数?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-18 10:49:32 | 显示全部楼层
我用CAD也有一段时间了,但对LISP语言却是一窍不通,上面各位大虾们上传的程序粗粗的看了一下也是一知半解,不知道学LISP有没有比较好的教程,还望各位大虾提供一二,谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-18 21:58:52 | 显示全部楼层
最初由 qjcpj 发布
[B]46楼楼主程序似曾相识,好像在那本书上见过。 [/B]


这是讨论心得的地方,不是****************
请把书上的内容上传好吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-20 13:31:33 | 显示全部楼层
我毕业没多久,今天也是新注册的毛丫头。用CAD也只有年多,对于LISP的编写我很感兴趣,但是不知从何入手。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-20 21:46:08 | 显示全部楼层
十分对不起,并不是我有意和50楼楼主你过不去,也不想给各位“热情”泼冷水,只是该程序在我收集的程序集中就有(本人买书附赠光盘),并且一直在使用,既然是讨论AutoLISP编程心得,楼主是否欠考虑了......
另:北京科海培训中心策划,林龙震编著,科学出版社出版的《AutoCAD 2000/2000i/2002程序设计基础教程》一书的Page51~52有楼主的程序,不过前面加了二句(setq os (getvar "osmode"))(setvar "osmode" 0);后面加了一句(setvar "osmode" os) 。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-22 11:30:34 | 显示全部楼层
楼上看书非常仔细,佩服!
这儿有任意等分圆的程序:http://www.xdcad.net/forum/showthread.php?s=&threadid=301953
如何保存和恢复用户参数:
[php]
(defun c:xxx()
(cmdla0)
.....
(cmdla1)
)

(defun CMDLA0 ()
  (setq cmdech (getvar "CMDECHO"))
  (setq oom (getvar "orthomode"))
  (setq osm (getvar "osmode"))
  (SETQ LA (getvar "clayer"))
  (setq rmode (getvar "regenmode"))
  (setq pw (getvar "plinewid"))
  (setvar "regenmode" 0)
  (setvar "CMDECHO" 0)
  (princ)
)
(defun CMDLA1 ()
  (setvar "CMDECHO" cmdech)
  (setvar "orthomode" oom)
  (setvar "osmode" osm)
  (setvar "clayer" LA)
  (setvar "regenmode" rmode)
  (setvar "plinewid" pw)
  (princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-30 22:57:11 | 显示全部楼层
最初由 qjcpj 发布
[B]十分对不起,并不是我有意和50楼楼主你过不去,也不想给各位“热情”泼冷水,只是该程序在我收集的程序集中就有(本人买书附赠光盘),并且一直在使用,既然是讨论AutoLISP编程心得,楼主是否欠考虑了......
另:北... [/B]


不好意思,我在深圳,根本没见过你说的那本书。
举个简单的例子:
大家都编写 绘制中心线的程序,难道大家都是剽窃某本书上的吗?

实话告诉你,这个程序我用了8年了。
在我们这边的行业里也流传开了。
我甚至觉的那书的作者是看到别人的也未可知!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-31 22:39:32 | 显示全部楼层
实型数输入格式化:
[php]
; ----------------------- UREAL ----------------------------
;                    实型数输入格式化                       
;Example:(setq no1 (ureal 1 "" "\n\t实数" no1))            
(defun ureal (bit kwd msg def / inp)
  (if def
    (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
          bit (* 2 (fix (/ bit 2)))
    )
    (setq msg (strcat "\n" msg ": "))
  )
  (initget bit kwd)
  (setq inp (getreal msg))
  (if inp inp def)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-31 23:52:22 | 显示全部楼层
我是初学这个编程的!!
我很喜欢这个谢谢斑竹!!1
        我想加 你们为我的好友一起来讨论autolisp/vlisp 的个人心得好吗???
  如果有群的话 把我加进去吧 111
 我的qq号37696801 写auto就好了
  期待着.........................................
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-5 19:32:41 | 显示全部楼层

帮一下自己人

我用CAD有两年了对软件操作已经很熟悉了,想对二次开发进行研究以下,有很大的兴趣可自己不知道从什么地方下手啊,请教
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-6 15:55:48 | 显示全部楼层
很好
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2005-1-8 18:07:35 | 显示全部楼层
我把这个贴的内容整理了一下做成了chm,希望对大家有些帮助
今后有好的回帖还将陆续添加进去
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-11 23:57:40 | 显示全部楼层
编程确实能解决许多实际问题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 17:54 , Processed in 0.194232 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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