明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1132|回复: 5

[讨论] 根据原有矩形尺寸按右上角顶点画另一个尺寸矩形

[复制链接]
发表于 2015-7-8 16:14:56 | 显示全部楼层 |阅读模式
根据里面的矩形的右上角的点画外面的矩形,外面的矩形横向尺寸是100的倍数,纵向尺寸是10的倍数。
插件,或函数FLOOR在LISP中的用法,谢谢!

本帖子中包含更多资源

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

x
发表于 2015-7-8 17:44:47 | 显示全部楼层
这个应该很容易做到啊。
发表于 2015-7-8 18:55:53 | 显示全部楼层


(defun c:ts ( / os p1 p2 p3 p4 p5 p6 p7 heng zong out_heng out_zong)
  (setq os (getvar 'osmode))
  (setq p1 (getpoint "\n 请输入矩形右上角点"))
  (setq heng (getdist "请输入里面矩形横向长度==>> "))
  (setq zong (getdist "请输入里面矩形纵向长度==>> "))
  (setq out_heng (* (+ (fix (/ heng 100)) 1) 100))
  (setq out_zong (* (+ (fix (/ zong 10)) 2) 10))
  (setq p2 (polar p1 (angle '(0 0) '(0 -1)) zong))
  (setq p3 (polar p2 (angle '(0 0) '(-1 0)) heng))
  (setq p4 (polar p1 (angle '(0 0) '(-1 0)) heng))
  (setq p5 (polar p1 (angle '(0 0) '(0 -1)) out_zong))
  (setq p6 (polar p5 (angle '(0 0) '(-1 0)) out_heng))
  (setq p7 (polar p1 (angle '(0 0) '(-1 0)) out_heng))
  (setvar 'osmode 0)
  (command "pline" p1 p2 p3 p4 "c")
  (command "pline" p1 p5 p6 p7 "c")
  (command "DIMALIGNED" p7 p1 (polar p1 (angle '(0 0) '(0 1)) 80))
  (command "DIMALIGNED" p4 p1 (polar p1 (angle '(0 0) '(0 1)) 40))
  (command "DIMALIGNED" p7 p6 (polar p6 (angle '(0 0) '(-1 0)) 80))
  (command "DIMALIGNED" p1 p2 (polar p1 (angle '(0 0) '(-1 0)) 80))
  (setvar 'osmode os)
  )
(defun mk-polyline (lst /)
  (entmake (append (list '(0 . "LWPOLYLINE")
                         '(100 . "AcDbEntity")
                         '(100 . "AcDbPolyline")
                         (cons 90 (length lst))
                   )
                   (mapcar '(lambda (pt) (cons 10 pt)) lst)
           )
  )
)

发表于 2015-7-8 19:45:52 | 显示全部楼层
额  我也写了个,不知道有没有满足要求
  1. (defun c:tt( / dix diy en fix_heng fix_zong heng heng_1 i lst pt pt_1 pt_2 pt_3 zong zong_1)
  2.   (setq en (entget (car (entsel "\n选择矩形:"))))
  3.   (setq pt (reverse (cdr (reverse (getpoint "\n选择右上角点:")))))
  4.   (setq lst (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) en)))
  5.   (setq i 0)
  6.   (repeat 4
  7.     (setq dix (car (nth i lst)))
  8.     (setq diy (cadr (nth i lst)))
  9.     (cond
  10.       ((< dix (car pt)) (setq heng (- (car pt) dix)))
  11.       ((< diy (cadr pt)) (setq zong (- (cadr pt) diy)))
  12.     )
  13.     (setq i (1+ i))
  14.   )
  15.   (setq fix_heng (fix (/ heng 100.0)))
  16.   (setq fix_zong (fix (/ zong 10.0)))
  17.   (setq heng_1 (* (+ fix_heng 1) 100))
  18.   (setq zong_1 (* (+ fix_zong 1) 10))
  19.   (setq pt_1 (list 10 (- (car pt) heng_1) (cadr pt))
  20.         pt_2 (list 10 (- (car pt) heng_1) (- (cadr pt) zong_1))
  21.   pt_3 (list 10 (car pt) (- (cadr pt) zong_1))
  22.   )
  23.   (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 4) (cons 70 1) (cons 10 pt) pt_1 pt_2 pt_3))
  24.   (princ)
  25. )

本帖子中包含更多资源

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

x
 楼主| 发表于 2015-7-22 14:27:43 | 显示全部楼层
newbuser 发表于 2015-7-8 18:55
(defun c:ts ( / os p1 p2 p3 p4 p5 p6 p7 heng zong out_heng out_zong)
  (setq os (getvar 'osmode ...

谢谢
 楼主| 发表于 2015-7-22 14:28:49 | 显示全部楼层
重慶崽兒 发表于 2015-7-8 19:45
额  我也写了个,不知道有没有满足要求

谢谢,挺好的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-21 17:32 , Processed in 0.173081 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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