找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1029|回复: 4

[LISP程序]:自己制作的图库管理程序(附带原代码)

[复制链接]
发表于 2003-8-9 17:06:30 | 显示全部楼层 |阅读模式

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

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

×
自己写的一个图库管理程序,
公布代码,给大家做参考


  1. dcl程序
  2. dia9c : dialog {
  3. label = "填充图例【制作工具】";
  4.         :row{
  5.                 spacer_1;
  6.                         : boxed_column {
  7.                         label="图形预览";
  8.                                 :image_button {
  9.                                                 key = "kimage";
  10.                                                 color = -2;
  11.                                                 width = 30;
  12.                                                 aspect_ratio = 1;
  13.                                                 allow_accept = true;
  14.                                                 }
  15.                                 : slider {
  16.                                                 key = "slider_ww";
  17.                                                 min_value = 10;
  18.                                                 max_value = 100;
  19.                                                 width = 30;
  20.                                                 height = 1;
  21.                                                 small_increment = 5;
  22.                                                 big_increment = 10;
  23.                                                 value="50";
  24.                                         }
  25.                                         }
  26.                                        
  27.                         : slider {
  28.                                         key = "slider_hh";
  29.                                         min_value = 10;
  30.                                         max_value = 100;
  31.                                         width = 1;
  32.                                         height = 10;
  33.                                         small_increment = 5;
  34.                                         big_increment = 10;
  35.                                         layout=vertical;
  36.                                         value="50";
  37.                                 }

  38.                             : boxed_column {
  39.                 label = "设置线型";

  40.                 : edit_box {
  41.                     label = "线名";
  42.                     key = "name";
  43.                     edit_width = 7;
  44.                   
  45.                 }
  46.                 : edit_box {
  47.                     label = "角度";
  48.                     key = "angle";
  49.                     edit_width = 7;
  50.                   
  51.                 }
  52.                
  53.                 : edit_box {
  54.                     label ="X起点";
  55.                     key = "startx";
  56.                     edit_width = 7;
  57.                 }
  58.                 : edit_box {
  59.                     label ="Y起点";
  60.                     key = "starty";
  61.                     edit_width = 7;
  62.                 }
  63.                
  64.                 : edit_box {
  65.                     label = "X偏移";
  66.                     key = "offsetx";
  67.                     edit_width = 7;
  68.                 }
  69.                 : edit_box {
  70.                     label = "Y偏移";
  71.                     key = "offsety";
  72.                     edit_width = 7;
  73.                 }
  74.        
  75.        
  76.            }

  77.           
  78.                 : boxed_column {
  79.                 label = "排列方式";

  80.                 : edit_box {
  81.                     label = "间隔1";
  82.                     key = "dis1";
  83.                     edit_width = 7;
  84.                     
  85.                 }
  86.                 : edit_box {
  87.                     label = "间隔2";
  88.                     key = "dis2";
  89.                     edit_width = 7;
  90.                     
  91.                 }        : edit_box {
  92.                     label = "间隔3";
  93.                     key = "dis3";
  94.                     edit_width = 7;
  95.                     
  96.                 }               
  97.                 : edit_box {
  98.                     label = "间隔4";
  99.                     key = "dis4";
  100.                     edit_width = 7;
  101.                 }
  102.                 : edit_box {
  103.                     label = "间隔5";
  104.                     key = "dis5";
  105.                     edit_width = 7;
  106.                 }
  107.                 : edit_box {
  108.                     label = "间隔6";
  109.                     key = "dis6";
  110.                     edit_width = 7;
  111.                 }
  112.                
  113.        
  114.            }
  115.                  :boxed_column
  116.                  {

  117.                  label="操作线型";
  118.                  :button{
  119.                                 label="打开";
  120.                                 key="openline";
  121.                                                                
  122.                 }

  123.                  :button{
  124.                                 label="添加";
  125.                                 key="addline";
  126.                                                                
  127.                 }
  128.                 :button{
  129.                                 label="保存";
  130.                                 key="saveline";
  131.                                                                
  132.                 }
  133.                 :button{
  134.                                 label="另存";
  135.                                 key="saveasline";
  136.                                                                
  137.                 }
  138.                
  139.                 :button{
  140.                                 label="注释";
  141.                                 key="dimline";
  142.                                                                
  143.                 }
  144.                 :button{
  145.                                 label="删除";
  146.                                 key="delline";
  147.                                                                
  148.                 }
  149.                 }

  150.                                
  151.                 }
  152.         :boxed_row{
  153.                 label="相关缩放比例";
  154.                 alignment="left";
  155.                 :concatenation{
  156.                                 :text_part{label="水平比例=【";}
  157.                                 :text_part{key="kww";width=2;}
  158.                                 :text_part{label="】";}
  159.                                 }
  160.                 :concatenation{
  161.                                 :text_part{label="垂直比例【";}
  162.                                 :text_part{key="khh";width=2;}
  163.                                 :text_part{label="】";}
  164.                                 }
  165.                
  166.                

  167.                        :button{
  168.                                 label="新建图例";
  169.                                 key="addpat";
  170.                                                                
  171.                 }
  172.                 :button{
  173.                                 label="打开图例";
  174.                                 key="openpat";
  175.                                                                
  176.                 }
  177.                 :button{
  178.                                 label="保存图例";
  179.                                 key="savepat";
  180.                                                                
  181.                 }
  182.                 :button{
  183.                                 label="另存图例";
  184.                                 key="saveaspat";
  185.                           
  186.                 }
  187.                 :button{
  188.                                 label="取消操作";
  189.                                 key="cancelpat";
  190.                           
  191.                 }

  192.                
  193.        
  194.                 }
  195.                        
  196.       
  197.       
  198.             


  199.             
  200.         spacer_1;
  201.       
  202.        ok_cancel;              
  203.                


  204. }



  205. lsp程序
  206. (defun c:pat()
  207.    (setvar "cmdecho" 0)
  208.    (setq old_osmode(getvar "osmode"))
  209.    (setvar "osmode" 0)
  210.    (dcl_dia9c)
  211.    (setvar "osmode" old_osmode)
  212.    (prin1)
  213. )
  214. (defun dcl_dia9c()
  215.    (setq dcl_id (load_dialog "dia9c"))
  216.    (new_dialog "dia9c" dcl_id)
  217.    (def_dia9c)
  218.    ;(action_tile "slider_ww" "(sub_s_ww $value)")
  219.    ;(action_tile "slider_hh" "(sub_s_hh $value)")

  220.    (action_tile "angle" "(sub_angle $value)")
  221.    (action_tile "startx" "(sub_startx $value)")
  222.    (action_tile "starty" "(sub_starty $value)")
  223.    (action_tile "offsetx" "(sub_offsetx $value)")
  224.    (action_tile "offsety" "(sub_offsety $value)")
  225.   ; (action_tile "angle" "(sub_angle $value)")
  226.   
  227.    (action_tile "accept" "(ok_dia9c)(done_dialog 1)")
  228.    (setq dd(start_dialog))
  229.    (if (= dd 1)(draw_dia9c))              ;调用绘图函数
  230. )  
  231. (defun def_dia9c()
  232.   (setq wws "50" hhs "50")
  233.   (setq nam "Line1" a "35.00" sx "0" sy "0" delx "9" dely "8" leng "58")
  234.   (set_tile "slider_ww" wws)
  235.   (set_tile "slider_hh" hhs)
  236.   (set_tile "kww" wws)
  237.   (set_tile "khh" hhs)

  238.   (set_tile "name" nam)
  239.   (set_tile "angle" a)
  240.   (set_tile "startx" sx)
  241.   (set_tile "starty" sy)
  242.   (set_tile "offsetx" delx)
  243.   (set_tile "offsety" dely)
  244.   ;(set_tile "dis1" leng)
  245.   (mode_tile "angle" 2)
  246.   
  247.   (dia9c_image)
  248. )
  249. (defun sub_angle(ang)            
  250.   (setq a ang)
  251.   (set_tile "angle" a)
  252.   (dia9c_image)
  253. )

  254. (defun sub_startx(sx1)
  255.   (setq sx sx1)
  256.   (set_tile "startx" sx)
  257.   (dia9c_image)
  258. )
  259. (defun sub_starty(sy1)
  260.   (setq sy sy1)
  261.   (set_tile "starty" sy)
  262.   (dia9c_image)
  263. )

  264. (defun sub_offsetx(setx)
  265.   (setq delx setx)
  266.   (set_tile "offsetx" delx)
  267.   (dia9c_image)
  268. )
  269. (defun sub_offsety(sety)
  270.   (setq dely sety)
  271.   (set_tile "offsety" dely)
  272.   (dia9c_image)
  273. )


  274. (defun sub_s_hh(vvs)
  275.    (setq hhs vvs)
  276.    (set_tile "khh" hhs)
  277.    (dia9c_image)
  278. )
  279. (defun dia9c_image()
  280.    (setq key "kimage")
  281.    (setq rx (dimx_tile key))
  282.    (setq ry (dimy_tile key))
  283.    (setq delta_x(/ rx 100))
  284.    (setq delta_y(/ ry 100))
  285.    (setq half_ww(/ (* delta_x (atoi wws)) 2))
  286.    (setq half_hh(/ (* delta_y (atoi hhs)) 2))
  287.    (setq p5x (/ rx 2))        ;图像中点 x
  288.    (setq p5y (/ ry 2))        ;图像中点 y       
  289.    (setq p6x (- p5x half_ww))
  290.    (setq p6y p5y)
  291.    (setq p1x p6x)
  292.    (setq p1y (+ p5y half_hh))
  293.    (setq p2x (+ p5x half_ww))
  294.    (setq p2y (+ p5y half_hh))
  295.    (setq p4x p5x)
  296.    (setq p4y (- p5y half_hh))
  297.    (setq p3x p2x)
  298.    (setq p3y (- p5y half_hh))
  299.    (start_image key)
  300.    (fill_image 0 0 rx ry -2)
  301.    ;(vector_image p1x p1y p2x p2y 7)
  302.   ; (vector_image p2x p2y p3x p3y 7)
  303.    ;(vector_image p3x p3y p4x p4y 7)
  304. ;  (vector_image p4x p4y p5x p5y 7)
  305. ;  (vector_image p5x p5y p6x p6y 7)
  306. ;  (vector_image p6x p6y p1x p1y 7)

  307.   (setq p5x (atoi sx))    (setq p5y (atoi sy))
  308.    (setq n 1)
  309.    (repeat 100
  310.    (setq deltay (atoi dely))
  311.    
  312.    (setq dis (atoi leng) ang a deltax (atoi delx))
  313.    (setq u0x p5x u0y p5y)
  314.    (setq d0x (- p5x(* (cos(angtof ang))deltax)))
  315.    (setq d0y (+ p5y(* (sin(angtof ang))deltax)))
  316.    (repeat 25
  317.      (setq u1x (+(* dis(cos(angtof ang)))u0x) u1y (- u0y (* dis(sin(angtof ang )))) )
  318.      (setq d1x (- d0x(* dis (cos(angtof ang)))) d1y (+(* dis(sin(angtof ang )))d0y))
  319.      (vector_image (fix u0x) (fix u0y) (fix u1x) (fix u1y) 7)
  320.      (vector_image (fix d0x) (fix d0y) (fix d1x) (fix d1y) 7)
  321.      (setq u0x (+(* (+ deltax dis)(cos(angtof ang)))u0x) u0y (- u0y (* (+ dis deltax)(sin(angtof ang)))) )
  322.      (setq d0x (- d0x(* (+ dis deltax)(cos(angtof ang)))) d0y (+(* (+ dis deltax)(sin(angtof ang)))d0y))
  323.    )
  324.    (setq n (+ n 1))  
  325.    (setq p5x (+ (*(sin(angtof ang)) deltay) p5x))
  326.    (setq p5y (+ (*(cos(angtof ang)) deltay) p5y))
  327.    
  328.    )
  329.    (end_image)
  330. )
  331. (defun ok_dia9c()
  332.    (setq ww (atof (get_tile "kww")))
  333.    (setq hh (atof (get_tile "khh")))
  334.    (setq ff (open "D:\\Program Files\\AutoCAD 2002\\Support\\test.pat" "w"))
  335.    (setq explain (strcat "*" "test,first"))
  336.    (write-line explain ff)
  337.    ;(setq data (strcat(strcat(strcat(strcat (strcat(strcat (strcat(strcat ang ",") sx)",")sy)",")(rtos deltax))",")(rtos deltay)))
  338.    (setq data (strcat ang "," sx "," sy","(rtos deltax)","(rtos deltay)))
  339.    (write-line data ff)
  340.    (close ff)
  341.    
  342.   
  343.    
  344. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 16个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

已领礼包: 59个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 16个

财富等级: 恭喜发财

发表于 2003-8-14 12:02:21 | 显示全部楼层
根本无法使用!只是一个架子而已,否则,代码不只是那一点儿。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 19:03 , Processed in 0.192004 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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