明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2683|回复: 11

趣味LISP

  [复制链接]
发表于 2004-11-18 23:13:00 | 显示全部楼层 |阅读模式
;这是一个趣味LISP,希望能给大家一些灵感.
(defun drawbox()
(grdraw ll ul -1 ) (grdraw ul ur -1 1)
(grdraw ur lr -1 1) (grdraw lr ll -1 1)
(if (= mode 0) (cenx) (arrow))
)
(defun cenx()
(grdraw x1 x2 -1) (grdraw x3 x4 -1)
)
(defun arrow()
(grdraw a1 a4 -1) (grdraw a2 a4 -1) (grdraw a3 a4 -1)
)
(defun newbox() ;求各线段的端点,包括矩形、箭头和交叉X线
(setq deltay (* deltax aspect))
(setq xcen (car center) ycen (cadr center))
(setq lx (- xcen deltax) ux (+ xcen deltax))
(setq ly (- ycen deltay) uy (+ ycen deltay))
(setq ll (list lx ly) ul (list lx uy))
(setq ur (list ux uy) lr (list ux ly))
(setq yp (+ ycen arm) ym (- ycen arm))
(setq a1 (list (- ux arm) yp) a2 (list (- ux arm) ym))
(setq a3 (list (- ux arm arm) ycen))
(setq a4 (list ux ycen))
(setq x1 (list (- xcen arm) ym) x2 (list (+ xcen arm) yp))
(setq x3 (list (- xcen arm) yp) x4 (list (+ xcen arm) ym))
(drawbox)
)
(defun C:ZW(/ arm aspect deltax inp loop mode prev pt source)
(setq center (getvar "viewctr")) ;屏幕中心
(setvar "lastpoint" (setq prev center))
(setq aspect (/ (cadr (setq aspect (getvar "screensize"))) (car aspect)))
(setq deltax (* 0.25 (getvar "viewsize"))) ;当前窗口大小(绘图单位)
(setq arm (* 0.1 deltax) mode 0 loop t)
(newbox)
(while loop
(setq inp (grread t)) ;返回当前光标坐标
(setq source (car inp) pt (cadr inp))
(cond ((= source 3) ;source=3表示单击左键
(cenx) (arrow)
(setq mode (- 1 mode))
(setvar "lastpoint" center))
((= source 5)
(if (or (/= (car prev) (car pt))
(/= (cadr prev) (cadr pt)))
(progn
(if (= mode 0)
(setq center pt)
(setq deltax (+ deltax (- (car pt) (car prev)))))
(setq prev pt)
(drawbox)
(newbox)
)))
((or (and (= source 6) (= pt 0))
(and (= source 2)
(or (= pt 13) (= pt 32))))
(drawbox)
(command "zoom" "w" ll ur)
(setq loop nil))
(t
(drawbox)
(setq loop nil a "^cancel"))
)
)
)

评分

参与人数 1金钱 +20 贡献 +5 激情 +5 收起 理由
xazhji + 20 + 5 + 5 【好评】好程序有创意!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2004-11-19 09:19:00 | 显示全部楼层
说说干啥用的?
发表于 2004-11-19 09:56:00 | 显示全部楼层
请问有何作用?
发表于 2004-11-19 21:51:00 | 显示全部楼层
应该是像 鹰眼 里的缩放图工具,不过,好像程序有点儿问题,未能达到预期效果。
 楼主| 发表于 2004-11-19 22:47:00 | 显示全部楼层
程序没有问题,只是一段趣味代码.你可以自己完善,作为它用.
发表于 2004-11-20 08:02:00 | 显示全部楼层
有特色!
发表于 2004-11-20 09:50:00 | 显示全部楼层
和 zoom -d 效果差不多阿
发表于 2004-11-20 20:34:00 | 显示全部楼层
但是,zoom好像没有发挥作用?
发表于 2004-11-21 01:54:00 | 显示全部楼层
我试也不行,只显示虚框,没有缩放视图。cad2004
发表于 2004-11-22 11:20:00 | 显示全部楼层
有没有办法实现亮显的曲线呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-30 04:25 , Processed in 0.180535 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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