找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 673|回复: 12

[已解决] 【已解决】小试了一下放坡 不知道哪里不对 求大神指点

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2018-4-2 21:53:19 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 童童童 于 2018-4-3 10:24 编辑

(defun c:fp (/ p_start ph pd pt pn psx psy ptx pty p_second p_third count1 count2 d_x d_y cp1x cp1y cp2x cp2y cp1 cp2)
  (setvar "cmdecho" 0)

;以下p_start ph pd pt pn由使用者输入
  (setq p_start (getpoint "放坡起点"))
  (setq ph (getdist p_start "\n输入坡高"))
  (setq pd (getreal "\n1:? 放坡"))
  (setq pt (getreal "\n平台宽度"))
  (setq pn (getint "\n输入放坡数"))

;以下psx psy ptx pty p_second p_third由程序计算出
  (setq psx (+ (* pd ph) (car p_start)))
  (setq psy (+ ph (cadr p_start)))
  (setq ptx (+ psx pt))
  (setq pty (+ 0 psy))
  (setq p_second (list psx psy))
  (setq p_third (list ptx pty))

;以下依据p_start p_second p_third画多段线
  (command "pline" p_start p_second p_third "")

;以下根据放坡台阶数重复画线过程

  (setq count1 0)
  (setq count2 1)
  (while (< count2 pn)

  (setq d_x (+ (* pd ph) pt))
  (setq d_y (+ 0 ph))
  (setq cp1x (+ (* count1 d_x) (car p_start)))
  (setq cp1y (+ (* count1 d_y) (cadr p_start)))
  (setq cp2x (+ (* count2 d_x) (car p_start)))
  (setq cp2y (+ (* count2 d_y) (cadr p_start)))
  (setq cp1 (list cp1x cp1y))
  (setq cp2 (list cp2x cp2y))
  (command "copy" "l" "" cp1 cp2 "")
  (setq count1 (1+ count1))
  (setq count2 (1+ count2))
  )
  (prin1))

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

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-4-2 23:30:49 | 显示全部楼层
本帖最后由 newer 于 2018-4-2 23:52 编辑

楼主这程序用那么多COMMAND,跟放慢镜头似的,API写个,支持默认值。
搜狗截图20180402233223.gif

  1. (defun c:tt ()
  2.   (if (and (setq spt (getpoint "放坡起点<退出>:"))
  3.            (setq height (getdist spt "\n输入坡高<退出>:"))
  4.       )
  5.     (progn (if (not #xd_var_global_fangpo_scl)
  6.              (setq #xd_var_global_fangpo_scl 2.0)
  7.            )
  8.            (if (setq val (getreal
  9.                            (xdrx_prompt "\n1:? 放坡<" #xd_var_global_fangpo_scl ">:" t)
  10.                          )
  11.                )
  12.              (setq #xd_var_global_fangpo_scl val)
  13.            )
  14.            (if (not #xd_var_global_fangpo_width)
  15.              (setq #xd_var_global_fangpo_width 100.0)
  16.            )
  17.            (if (setq val (getreal (xdrx_prompt
  18.                                     "\n平台宽度<"
  19.                                     #xd_var_global_fangpo_width
  20.                                     ">:"
  21.                                     t
  22.                                   )
  23.                          )
  24.                )
  25.              (setq #xd_var_global_fangpo_width val)
  26.            )
  27.            (if (not #xd_var_global_fangpo_num)
  28.              (setq #xd_var_global_fangpo_num 1)
  29.            )
  30.            (if (setq val (getint (xdrx_prompt
  31.                                    "\n输入放坡数<"
  32.                                    #xd_var_global_fangpo_num
  33.                                    ">:"
  34.                                    t
  35.                                  )
  36.                          )
  37.                )
  38.              (setq #xd_var_global_fangpo_num val)
  39.            )
  40.            (setq pts nil)
  41.            (repeat #xd_var_global_fangpo_num
  42.              (setq ept1        (mapcar        '+
  43.                                 spt
  44.                                 (list (* height #xd_var_global_fangpo_scl) height 0.0)
  45.                         )
  46.                    ept2        (mapcar '+ ept1 (list #xd_var_global_fangpo_width 0.0 0.0))
  47.              )
  48.              (setq pts (cons ept2 (cons ept1 (cons spt pts))))
  49.              (setq spt ept2)
  50.            )
  51.            (xdrx_polyline_make (xd::pnts:ucs2wcs (reverse pts)))
  52.     )
  53.   )
  54.   (princ)
  55. )


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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-4-2 23:05:00 | 显示全部楼层
  1. (defun c:fp (/ p_start ph pd pt        pn psx psy ptx pty p_second p_third count1 count2 d_x d_y cp1x cp1y
  2.              cp2x cp2y cp1 cp2 oldos)
  3.   (setvar "cmdecho" 0) ;以下p_start ph pd pt pn由使用者输入
  4.   (setq oldos (getvar "osmode"))
  5.   (setvar "osmode" 0)
  6.   (setq p_start (getpoint "放坡起点"))
  7.   (setq ph (getdist p_start "\n输入坡高"))
  8.   (setq pd (getreal "\n1:? 放坡"))
  9.   (setq pt (getreal "\n平台宽度"))
  10.   (setq pn (getint "\n输入放坡数")) ;以下psx psy ptx pty p_second p_third由程序计算出
  11.   (setq psx (+ (* pd ph) (car p_start)))
  12.   (setq psy (+ ph (cadr p_start)))
  13.   (setq ptx (+ psx pt))
  14.   (setq pty (+ 0 psy))
  15.   (setq p_second (list psx psy))
  16.   (setq p_third (list ptx pty)) ;以下依据p_start p_second p_third画多段线
  17.   (command "pline" p_start p_second p_third "") ;以下根据放坡台阶数重复画线过程
  18.   (setq count1 0)
  19.   (setq count2 1)
  20.   (while (< count2 pn)
  21.     (setq d_x (+ (* pd ph) pt))
  22.     (setq d_y (+ 0 ph))
  23.     (setq cp1x (+ (* count1 d_x) (car p_start)))
  24.     (setq cp1y (+ (* count1 d_y) (cadr p_start)))
  25.     (setq cp2x (+ (* count2 d_x) (car p_start)))
  26.     (setq cp2y (+ (* count2 d_y) (cadr p_start)))
  27.     (setq cp1 (list cp1x cp1y))
  28.     (setq cp2 (list cp2x cp2y))
  29.     (command "copy" "l" "" cp1 cp2 "")
  30.     (setq count1 (1+ count1))
  31.     (setq count2 (1+ count2))
  32.   )
  33.   (setvar "osmode" oldos)
  34.   (prin1)
  35. )


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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-4-2 21:57:42 | 显示全部楼层
挺专业的东西,传一个DWG测试图,然后说下你觉得哪里不对,正确的应该是什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2018-4-2 22:03:17 | 显示全部楼层
newer 发表于 2018-4-2 21:57
挺专业的东西,传一个DWG测试图,然后说下你觉得哪里不对,正确的应该是什么?

我想先知道……怎么传DWG测试图啊……动态的我不会传……求指点

点评

论坛置顶贴,有制作动态GIF的教学。 如果不会,可以先截取个静态的最终结果的图片,贴上来。 DWG可以压缩成RAR,附件传上来。 还有,你认为哪里有问题,也说下。  详情 回复 发表于 2018-4-2 22:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-4-2 22:04:54 | 显示全部楼层
童童童 发表于 2018-4-2 22:03
我想先知道……怎么传DWG测试图啊……动态的我不会传……求指点

论坛置顶贴,有制作动态GIF的教学。

如果不会,可以先截取个静态的最终结果的图片,贴上来。

DWG可以压缩成RAR,附件传上来。

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2018-4-2 22:10:30 | 显示全部楼层
上面的线时我加载lisp的结果
下面那条线时我想要的结果
不知道为什么  命令好像不画平台的第三个点 微信截图_20180402221052.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2018-4-2 22:27:05 | 显示全部楼层
newer 发表于 2018-4-2 22:04
论坛置顶贴,有制作动态GIF的教学。

如果不会,可以先截取个静态的最终结果的图片,贴上来。

请问你加载以后是可以画成我想要的那种效果的吗?
而且我加载几次会有不同的结果……不知道为什么。是加载方式有问题吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2018-4-3 10:10:24 | 显示全部楼层
marting 发表于 2018-4-2 23:02
程序考虑的不周,你把捕捉关闭了再画看看。



请问您写的这个命令就是关闭捕捉吗?
(setvar "osmode" oldos)

另外,想感谢您给您D豆,不知道在哪里点

点评

程序开始 (setq oldos (getvar "osmode")) (setvar "osmode" 0) 第二行,是设置不捕捉,之前把你的系统设置保存到变量OLDOS里面了。 最后,程序执行完再 (setvar "osmode" oldos) 就是把捕捉设置恢复  详情 回复 发表于 2018-4-3 10:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2018-4-3 10:11:24 | 显示全部楼层
newer 发表于 2018-4-2 23:30
楼主这程序用那么多COMMAND,跟放慢镜头似的,API写个,支持默认值。



感谢您第一时间回复我~请问在哪可以给您D豆?

点评

你要想给我,那就点帖子右下角,有个评分 :) 如果解决了你的问题,你编辑下主题帖子,前面类别里面,改成 【已解决】  详情 回复 发表于 2018-4-3 10:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-4-3 10:17:40 | 显示全部楼层
童童童 发表于 2018-4-3 10:11
感谢您第一时间回复我~请问在哪可以给您D豆?

你要想给我,那就点帖子右下角,有个评分 :)

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-4-3 10:20:20 | 显示全部楼层
童童童 发表于 2018-4-3 10:10
请问您写的这个命令就是关闭捕捉吗?
(setvar "osmode" oldos)

程序开始

(setq oldos (getvar "osmode"))
(setvar "osmode" 0)

第二行,是设置不捕捉,之前把你的系统设置保存到变量OLDOS里面了。

最后,程序执行完再
(setvar "osmode" oldos)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 05:43 , Processed in 0.448572 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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