找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 743|回复: 9

[求助] [求助]:请高手帮我改一下这段程序——实现动态画线

[复制链接]
发表于 2005-1-13 14:48:26 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-1-13 19:19:06 | 显示全部楼层
不知道楼主想要达到一个什么样的效果?!
能否上示意图?!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2005-1-15 16:15:54 | 显示全部楼层
我不太喜欢看别人的程序,太累。这样,我贴出我的程序,你参考一下吧。

  1.   [FONT=courier new]
  2. ;
  3. ; LEVEL.LSP  建筑标高标注程序  CYN 2003.8.7
  4. ; 最近一次修改: 2003.8.7
  5. ; 全局变量: #dwg_scl_cyn     图纸比例因子
  6. ;           #level_0_cyn     坐标值与标注值差
  7. ;           #bg_strhigh_cyn  标注文字字高
  8. ;;-----------------------------------------------------------------------------------------
  9. (defun level_err(s)
  10.       (if (/= s "Function cancelled")
  11.         (princ (strcat "\nError: " s))
  12.       )
  13.       (setvar "OSMODE" os)
  14.       (setvar "CMDECHO" cmd)
  15.       (command "_.UNDO" "_E")
  16. )
  17. ;;-----------------------------------------------------------------------------------------
  18. (defun c:level (/ os cmd temp xx ename move_pt pt0 pt1 pt2 pt3 pt4 pt5 pt6
  19.                   p1 p2  ang a b c ang1 ang2 angstr levelbg_cyn str)
  20.   (setq os (getvar "OSMODE"))
  21.   (setq cmd (getvar "CMDECHO"))
  22.   (setq *error* level_err)
  23.   (setvar "CMDECHO" 0)
  24.   (if (= #dwg_scl_cyn nil) (setq #dwg_scl_cyn (getvar "DIMSCALE")))
  25.   (if (= #dwg_scl_cyn 0.0) (setq #dwg_scl_cyn 1.0))
  26.   (if (= #bg_strhigh_cyn nil) (setq #bg_strhigh_cyn 2.5))
  27.   (setq temp T)
  28.   (while temp
  29.      (prompt (strcat "\n文字字高 High = " (rtos #bg_strhigh_cyn)
  30.                      ", 比例因子 Scale = " (rtos #dwg_scl_cyn)))
  31.      (initget "High Scale")
  32.      (setq pt0 (getpoint "\n指示标注位置或 [H/字高 S/比例因子] : "))
  33.      (cond
  34.        ((= pt0 "High")
  35.           (setq xx (getreal (strcat "\n字体高度 <"(rtos #bg_strhigh_cyn)">:")))
  36.           (if xx (setq #bg_strhigh_cyn xx))
  37.        )
  38.        ((= pt0 "Scale")
  39.           (setq xx (getreal (strcat "\n比例因子 <"(rtos #dwg_scl_cyn)">:")))
  40.           (if xx (setq #dwg_scl_cyn xx))
  41.        )
  42.        (T
  43.          (setq temp nil)
  44.        )
  45.      )
  46.    )
  47.    (setvar "OSMODE" 0)
  48.    (setq pt1 pt0)  
  49.    (level_dwg 0.0 0.5 pi 0.0)
  50. ;;-----------------------------------------------------------------------------------------
  51.    (prompt "\n指示引出标注位置< 原地标注 >:")
  52.    (setq temp T)
  53.    (while temp
  54.      (setq move_pt (grread T 4 0))
  55.      (cond
  56.        ((= 5 (car move_pt))
  57.          (setq pt1 (cadr move_pt))
  58.          (setq pt1 (polar pt1 (* pi 0.5) (* #dwg_scl_cyn 2.5)))
  59.          (if (> (car pt1) (car pt0))
  60.            (progn
  61.               (level_dwg 0.0 0.5 pi 0.0)
  62.               (setq p1 (polar pt1 pi (* #dwg_scl_cyn 3.0)))
  63.               (setq p2 (polar p1 0.0 (* #dwg_scl_cyn 5.0)))
  64.            )
  65.            (progn
  66.               (level_dwg 0.0 0.5 0.0 pi)
  67.               (setq p1 (polar pt1 0.0 (* #dwg_scl_cyn 3.0)))
  68.               (setq p2 (polar p1 pi (* #dwg_scl_cyn 5.0)))
  69.            )
  70.          )
  71.          (redraw)
  72.          (grdraw pt0 p1 3 1)
  73.          (grdraw p1 p2 3 1)
  74.        )
  75.        ((= 3 (car move_pt))
  76.          (setq pt1 (cadr move_pt))
  77.          (setq pt1 (polar pt1 (* pi 0.5) (* #dwg_scl_cyn 2.5)))
  78.          (redraw)
  79.          (command "_pline" pt0 "w" "0.0" "" p1 p2 "")
  80.          (setq temp nil)
  81.          (setq ang 0.0)
  82.        )
  83.        ((or (= 12 (car move_pt)) (= 25 (car move_pt)))
  84.           (redraw)
  85.           (setq pt1 pt0)
  86.           (level_dwg 0.0 0.5 pi 0.0)
  87.           (setq temp nil)
  88.        )
  89.      )
  90.    )
  91. ;;-----------------------------------------------------------------------------------------
  92.    (defun level_xz_cyn ()
  93.       (prompt "\n指示旋转方向点< 正交 >:")
  94.       (setq temp T)
  95.       (while temp
  96.         (setq move_pt (grread T 4 0))
  97.         (cond
  98.           ((= 5 (car move_pt))
  99.             (setq move_pt (cadr move_pt))
  100.             (redraw)
  101.             (grdraw pt1 move_pt 5 1)
  102.             (setq ang (angle pt1 move_pt))
  103.             (level_dwg ang 0.5 pi 0.0)
  104.           )
  105.           ((= 3 (car move_pt)) (setq temp nil))
  106.           ((or (= 12 (car move_pt)) (= 25 (car move_pt)))
  107.             (cond
  108.               ((equal ang 0.0 0.78)  (setq ang 0.0))
  109.               ((equal ang (* pi 0.5) 0.78)  (setq ang (* pi 0.5)))
  110.               ((equal ang pi 0.78)  (setq ang pi))
  111.               ((equal ang (* pi 1.5) 0.78)  (setq ang (* pi 1.5)))
  112.             )
  113.             (level_dwg ang 0.5 pi 0.0)
  114.             (setq temp nil)
  115.           )
  116.         )
  117.       )
  118.    )
  119. ;;-----------------------------------------------------------------------------------------
  120.    (if (= pt1 pt0) (level_xz_cyn))
  121.    (prompt "\n指示标高标记方向:")
  122.    (setq temp T)
  123.    (while temp     
  124.      (setq move_pt (grread T 4 0))
  125.      (if (= 5 (car move_pt))
  126.        (progn
  127.           (setq move_pt (cadr move_pt))
  128.           (redraw)
  129.           (grdraw pt1 move_pt 2 1)
  130.           (setq ang1 (angle pt1 move_pt))
  131.           (setq ang2 (- ang1 ang))
  132.            (cond
  133.              ((and (< ang2 0.0) (> ang2 (* pi -0.5)))            (level_dwg ang 1.5 pi 0.0))
  134.              ((and (< ang2 (* pi -0.5)) (> ang2 (* pi -1.0)))    (level_dwg ang 1.5 0.0 pi))
  135.              ((and (< ang2  (* pi -1.0)) (> ang2 (* pi -1.5)))   (level_dwg ang 0.5 0.0 pi))
  136.             ......             ((and (> ang2 (* pi 0.5)) (< ang2 pi))              (level_dwg ang 0.5 0.0 pi))
  137.              ((and (> ang2  pi) (< ang2 (* pi 1.5)))             (level_dwg ang 1.5 0.0 pi))
  138.              ((and (> ang2 (* pi 1.5)) (< ang2 (* pi 2.0)))      (level_dwg ang 1.5 pi 0.0))
  139.           )
  140.         )
  141.         (setq temp nil)   
  142.      )
  143.    )
  144.    (redraw)
  145. ;;-----------------------------------------------------------------------------------------
  146.    (if (= #level_0_cyn nil)
  147.        (setq levelbg_cyn (/ (fix (cadr pt0)) 1000.0))
  148.        (setq levelbg_cyn (/ (fix (- (cadr pt0) #level_0_cyn)) 1000.0))
  149.    )

  150.    (setq xx (getreal (strcat "\n标高值 <" (rtos levelbg_cyn 2 3) ">:")))
  151.    (if xx
  152.        (setq levelbg_cyn xx
  153.              #level_0_cyn (- (cadr pt0) (* xx 1000.0))
  154.        )
  155.    )

  156.    (if (= (fix levelbg_cyn) levelbg_cyn)
  157. 。。。。。。
  158.               )
  159.             )
  160.          )
  161.       )
  162.    )

  163.    (if (= levelbg_cyn 0.0) (setq str "%%p0.000"))
  164.    (if (and (> (angle pt2 pt5) 1.95) (<= (angle pt2 pt5) 4.85))        
  165.         (setq angstr (/ (* (angle pt5 pt2) 180) pi))
  166.         (setq angstr (/ (* (angle pt2 pt5) 180) pi))
  167.    )
  168.    (command "text" "_middle" pt6 (* #bg_strhigh_cyn #dwg_scl_cyn) angstr str)   
  169.    (setvar "CMDECHO" cmd)
  170.    (setvar "OSMODE" os)
  171. )
  172. ;;-----------------------------------------------------------------------------------------
  173.    (defun level_dwg (ang a b c)
  174.       (if ename (entdel ename))
  175.       (setq pt2 (polar pt1 (+ ang (* pi a)) (* #dwg_scl_cyn 2.5))
  176.             pt3 (polar pt2 (+ ang b) (* #dwg_scl_cyn 2.5))
  177.             pt4 (polar pt3 (+ ang c) (* #dwg_scl_cyn 5.0))
  178.             pt5 (polar pt3 (+ ang c) (* #dwg_scl_cyn 14.0))
  179.             pt6 (polar pt2 (+ ang c) (* #dwg_scl_cyn 5.0))
  180.             pt6 (polar pt6 (+ ang (* pi a)) (* #dwg_scl_cyn 2.5))
  181.       )
  182.       (command "_pline" pt4 "w" "0.0" "" pt1 pt3 pt5 "")
  183.       (setq ename (entlast))
  184.    )
  185. ;;-----------------------------------------------------------------------------------------

  186.   [/FONT]


程序中间去掉了几句,不能运行的。
原因:看不惯某些人把从网上收集的别人的程序到处乱贴。去掉的几句对你来说不存在任何问题,自己添加一下吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 02:55 , Processed in 0.399285 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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