找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 586|回复: 7

[求助] 求大神帮忙,这个东西我整了好多天了,实在没办法了!

[复制链接]
发表于 2019-12-10 01:04:13 | 显示全部楼层 |阅读模式

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

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

×

我想画这样的一种木工板的大样图。我试过好多方法和思路,但是都不成功!谁能给我个思路,给我一个角平分的函数也好啊!

希望画任意方向的矩形  都会让中间的两条横线方向 随长的边


YY截图20191210015510.png
(defun C:jk( / lay os sz sp pt1 pt2 pt3 pt4 pt5 pt6  pt7 pt8  pt9 pt10 pt11 pt12 fx)
       
   (setvar "CMDECHO" 0)
   (setq lay (getvar "clayer"))
   (command "color" "bylayer")
   (setq pt1 (getpoint "\n左下角点: "))
         (setq pt3 (getpoint "\n右上角点: "))
   (setvar "OSMODE" 0)
         (setq pt2 (list (car pt3) (cadr pt1)))
         (setq pt4 (list (car pt1) (cadr pt3)));外框线点定位  
       
         (setq pt5 (polar pt1 (* pi 0.25) 1.414214))
   (setq pt6 (polar pt2 (* pi 0.75) 1.414214))
   (setq pt7 (polar pt3 (* pi -0.75) 1.414214))
         (setq pt8 (polar pt4 (* pi -0.25) 1.414214));内框线点定位  
       
        (command "pline"pt1 pt2 pt3 pt4 pt1 "")  ;画外框     
  (command "pline"pt5 pt6 pt7 pt8 pt5 "")     ;画内框       
       
         (setq sz (distance pt5 pt8));内框高度
         (setq sp (distance pt5 pt6));内框宽度


        (setq pt9 (polar pt5  (* pi 0.5) (* 0.3333 sz)))
        (setq pt10 (polar pt5 (* pi 0.5) (* 0.6666 sz)))
        (setq pt11 (polar pt6 (* pi 0.5) (* 0.3333 sz)))
        (setq pt12 (polar pt6 (* pi 0.5) (* 0.6666 sz)))


        (command "line" pt9 pt11"")     ;画等分线
        (command "line"pt10 pt12"")     ;画等分线


  (setvar "OSMODE" 16383)
)


YY截图20191210015925.png
(defun C:kj( / lay os sz sp pt1 pt2 pt3 pt4 pt5 pt6  pt7 pt8  pt9 pt10 pt11 pt12 fx)
       
   (setvar "CMDECHO" 0)
   (setq lay (getvar "clayer"))
   (command "color" "bylayer")
   (setq pt1 (getpoint "\n左下角点: "))
         (setq pt3 (getpoint "\n右上角点: "))
   (setvar "OSMODE" 0)
         (setq pt2 (list (car pt3) (cadr pt1)))
         (setq pt4 (list (car pt1) (cadr pt3)));外框线点定位  
       
         (setq pt5 (polar pt1 (* pi 0.25) 1.414214))
   (setq pt6 (polar pt2 (* pi 0.75) 1.414214))
   (setq pt7 (polar pt3 (* pi -0.75) 1.414214))
         (setq pt8 (polar pt4 (* pi -0.25) 1.414214));内框线点定位  
       
        (command "pline"pt1 pt2 pt3 pt4 pt1 "")  ;画外框     
  (command "pline"pt5 pt6 pt7 pt8 pt5 "")     ;画内框       
       
         (setq sz (distance pt5 pt8));内框高度
         (setq sp (distance pt5 pt6));内框宽度


        (setq pt9 (polar pt5  0 (* 0.3333 sp)))
        (setq pt10 (polar pt5 0 (* 0.6666 sp)))
        (setq pt11 (polar pt8 0 (* 0.3333 sp)))
        (setq pt12 (polar pt8 0 (* 0.6666 sp)))


        (command "line" pt9 pt11"")     ;画等分线
        (command "line"pt10 pt12"")     ;画等分线


  (setvar "OSMODE" 16383)
)



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

已领礼包: 511个

财富等级: 财运亨通

发表于 2019-12-11 16:13:20 | 显示全部楼层
本帖最后由 pxr201419 于 2019-12-11 16:26 编辑

得分辨一下内框的高度和宽度哪一个大,pt9、pt10、pt11、pt12要放在短边上,把pt9到pt12四行换成下面的就好了
(cond ((>= sp sz)
           (setq pt9 (polar pt5 (/ pi 2) (/ sz 3.0)))
           (setq pt10 (polar pt5 (/ pi 2) (* sz (/ 2.0 3))))
           (setq pt11 (polar pt6 (/ pi 2) (/ sz 3.0)))
           (setq pt12 (polar pt6 (/ pi 2) (* sz (/ 2.0 3)))))
          (t
           (setq pt9 (polar pt5 0 (/ sp 3.0)))
           (setq pt10 (polar pt5 0 (* sp (/ 2.0 3))))
           (setq pt11 (polar pt8 0 (/ sp 3.0)))
           (setq pt12 (polar pt8 0 (* sp (/ 2.0 3))))))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-12 21:00:31 | 显示全部楼层
pxr201419 发表于 2019-12-11 16:13
得分辨一下内框的高度和宽度哪一个大,pt9、pt10、pt11、pt12要放在短边上,把pt9到pt12四行换成下面的就好 ...

太谢谢了!!!我能不能再问一个问题,就是前面的语句我希望是可以任意角度的去画,现在只能左下角和右上角两点选择,如果在左上和右下两点选择,就会出错,我简化程序画回字形,但是也始终不能成功!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1876个

财富等级: 堆金积玉

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

使用道具 举报

发表于 2019-12-13 12:58:03 | 显示全部楼层
矩形画好之后,重新定义矩形4个顶点,可以用4个点的X Y坐标确定,X Y最小的是左下角的点,X Y最大是右上角(setq p1 (getpoint"\n第一点"))
  
     (setq p3 (getcorner p1 "\n第二点"))
     (command "rectang" p1 p3)
     (setq ent (entlast))
     (vl-load-com)
     (vla-getboundingbox (vlax-ename->vla-object ent) 'minpoint 'maxpoint)
     (setq pmax (vlax-safearray->list maxpoint)
                 pmin (vlax-safearray->list minpoint))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-13 21:55:12 | 显示全部楼层
uualice 发表于 2019-12-13 12:58
矩形画好之后,重新定义矩形4个顶点,可以用4个点的X Y坐标确定,X Y最小的是左下角的点,X Y最大是右上角( ...

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

使用道具 举报

发表于 2019-12-13 22:04:49 | 显示全部楼层
cq4920 发表于 2019-12-13 21:55
特别感谢!两位老师的代码,帮我了我大忙,还学习了知识!

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:123.lsp 
下载次数:1  文件大小:1.78 KB  售价:1D豆 [记录]
下载权限: 不限 以上  [免费赚D豆]


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 10:28 , Processed in 0.196907 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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