找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1062|回复: 8

[求助] [求助]:如何画中心线?

[复制链接]
发表于 2006-9-18 10:25:22 | 显示全部楼层 |阅读模式

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

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

×
这是网上下的画长孔的LSP程序
原来没有画中心线,我添加了中心线
怎么画出来不对
另如何再加一个旋转功能
菜鸟刚学求大大们帮忙改一下


[php] (defun c:frec (/ os as cen rad l d zx pt1 pt2 pt3 pt4 p5 p6 p7 p8 p9 p10 )
    (setq os (getvar "osmode")
        as (getvar "autosnap")
        LA (getvar "clayer"))
  (while (and (setq cen (getpoint "\n请输入中心点:"))
              (setq rad (getdist cen "\n请输入圆半径:"))
              (setq l   (getdist cen "\n请输入半长:"))
         )
     (setq zx(getstring "\n 是否要中心线[是(Y)/否(N)] <N>:"))
    (if        (>= l rad)
      (progn
        (setq d   (- l rad)
              pt1 (mapcar '- cen (list d rad 0))
              pt2 (mapcar '- cen (list d (- rad) 0))
              pt3 (mapcar '+ cen (list d rad 0))
              pt4 (mapcar '+ cen (list d (- rad) 0))
        )
        (setvar "osmode" 0)
        (if (= 0 (logand as 8))
          (setvar "autosnap" (+ as 8))
        )      
        (vl-cmdf ".pline" pt1 "a" "d" 180 pt2 "l" pt3 "a" pt4 "l" "cl")
        (cond ((or (= zx "y") (= zx "Y"))
          (command"layer" "m" "中心线" "c" 1 "" "l" "center" "" "")
  (setvar"ltscale" 0.8)
  (setq p5(polar pt1(- (* 0.5 pi)) 3))
  (setq p6(polar pt2(+ (* 0.5 pi)) 3))
  (setq p7(polar pt3(- (* 1.5 pi)) 3))
  (setq p8(polar pt4(+ (* 1.5 pi)) 3))
  (setq p9(polar cen(+ pi) (+ l 3)))
  (setq p10(polar cen(+ (/ 0 l)) 3))
  (command"line" p5 p6 "")
  (command"line" p7 p8 "")
  (command"line" p10 p9 ""))
   )
        (while (/= 0 (getvar "cmdactive"))
          (vl-cmdf pause)
        )
        (setvar "osmode" os)
        (setvar "autosnap" as)
         (setvar "clayer" LA)
      )
      (princ "\n半长小于半径!无法创建,再来一次...:")
    )
  )
  (princ)
)
;;;;;-------------------------------
[/php]




                               
登录/注册后可看大图
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-9-22 12:29:20 | 显示全部楼层
因为忙,大致看了一下
你的p10中的(/ 0 l)是什么意思
我想也许是p10点有问题
还有你把中线+3mm,最好改成半径的一个倍数
我一般都选择半径的一半
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2006-9-24 08:54:43 | 显示全部楼层
这个绘制平键(或长条形滑动孔)及其中心线的程序已修改,试试看。结构专业/设备专业的设计人员可能用的上。
[PHP]

(defun c:frec
       (/ os as cen rad l d zx pt1 pt2 pt3 pt4 p5 p6 p7 p8 p9 p10)
  (setq        os (getvar "osmode")
        as (getvar "autosnap")
        LA (getvar "clayer")
  )
  (prompt "\n本程序用来绘制平键(或长条形滑动孔)及其中心线... ")
  (prompt "\nzxcvbnm-cad 网上摘录;  修改  _By Dwg001  ")
  (while (and (setq cen (getpoint "\n请输入平键中心点:"))
              (setq rad (getdist cen "\n请输入平键端圆半径:"))
              (setq l (getdist cen "\n请输入平键半长轴距:"))
         )
    (setq zx (getstring "\n 是否要中心线[是(Y)/否(N)] <N>:"))
    (if        (>= l rad)
      (progn
        (setq d          (- l rad)
              pt1 (mapcar '- cen (list d rad 0))
              pt2 (mapcar '- cen (list d (- rad) 0))
              pt3 (mapcar '+ cen (list d rad 0))
              pt4 (mapcar '+ cen (list d (- rad) 0))

        )
        (setvar "osmode" 0)
        (if (= 0 (logand as 8))
          (setvar "autosnap" (+ as 8))
        )
        (vl-cmdf ".pline" pt1 "a" "d" 180 pt2 "l" pt3 "a" pt4 "l" "cl")
        (cond
          ((or (= zx "y") (= zx "Y"))
           (command "layer" "m" "中心线" "c" 1 "" "l" "center" "" "")   
           (setvar "ltscale" 0.8)
           (setq p5 (polar pt1 (- (* 0.5 pi)) 3))
           (setq p6 (polar pt2 (+ (* 0.5 pi)) 3))
           (setq p7 (polar pt3 (- (* 1.5 pi)) 3))

           (setq p8 (polar pt4 (+ (* 1.5 pi)) 3))

           (setq p9 (polar cen (+ pi) (+ l 3)))
           (setq p10 (polar cen 0 (+ l  3)) )     
           (command "line" p5 p6 "")
           (command "line" p7 p8 "")
           (command "line" p10 p9 "")
          )
        )
        (while (/= 0 (getvar "cmdactive"))
          (vl-cmdf pause)
        )
        (setvar "osmode" os)
        (setvar "autosnap" as)
        (setvar "clayer" LA)
      )
      (princ "\n半长小于半径!无法创建,再来一次...:")
    )
  )
  (princ)
)
;;;;;-------------------------------结构专业,设备专业的设计人员可能用的上。[/COLOR]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-27 18:54:03 | 显示全部楼层 |阅读模式

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

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

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2006-9-28 12:50:46 | 显示全部楼层
"能不能增加旋转"是否指长轴与水平方向有任意夹角?[/COLOR] [F]"能不能增加旋转"是否指长轴与水平方向有任意夹角?[/F]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2006-9-29 22:59:42 | 显示全部楼层
是这个冬冬吗?贴个图片。需要者超过5人,即贴源码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 08:44 , Processed in 0.448699 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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