乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: ehsantavassolia

[编程交流] 预览m周围的矩形

[复制链接]

51

主题

481

帖子

457

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
262
发表于 2022-7-5 16:22:11 | 显示全部楼层
可以插入这个矩形吗?
回复

使用道具 举报

9

主题

31

帖子

24

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-5 16:23:45 | 显示全部楼层
 
是的,你有4个坐标
可以绘制矩形(命令“rectang”coordinate1“r”0 coordinate2)
 
只要更换这一行
 
((=(car inp)3)(pass_数据))
 
更换此线路
 
((=(car inp)3)(pass\U数据)(命令“rectang”p11“r”0 p13))
 
然后
 
更换此线路
 
(setq p1(列表(-car pnt)(/dx 2.0))((cadr pnt)(/dy 2.0)))
p2(极性p1(/pi 2.0)dy)p3(极性p2 0 dx)p4(极性p1 0 dx))
 
更换此线路
 
(setq p1(列表(-car pnt)(/dx 2.0))((cadr pnt)(/dy 2.0)))
p2(极性p1(/pi 2.0)dy)p3(极性p2 0 dx)p4(极性p1 0 dx)p11 p1 p13 p3)
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 16:26:11 | 显示全部楼层
好东西Rlx!
由于你的创造性,我总是尽量不忽视你的建议。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:32:32 | 显示全部楼层
 
Thanx Grrr状态线并不完全是我第一次想到的,但现在它必须这样做。但出于实用目的,它是完全功能性的
 
gr.Rlx
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 16:33:01 | 显示全部楼层
仔细阅读你的代码,进行一些日常练习:
 
  1. (defun C:test ( / mysc GetISOpsizes shiftL msgf _getrec LWPoly *error* psL scL orn s g k r rec )
  2. '(87 114 105 116 116 101 110 32 98 121 32 71 114 114 114)
  3. (setq mysc 0.1) ; scale factor for the units, to readjust the rectangle's size of (_getrec) and the console prompts, can be leaved nil.
  4. ; ("A4" "210.00" "297.00")
  5. (defun GetISOpsizes ( / L r )
  6.    (defun splitstr (s d / p L) (while (setq p (vl-string-search d s)) (setq L (cons (substr s 1 p) L)) (setq s (substr s (+ p 2)))) (reverse (cons s L)))
  7.    (defun GetCanonicalMediaNames ( / acDoc layObj )
  8.      (setq layObj (vla-get-ActiveLayout (setq acDoc (vla-get-ActiveDocument (vlax-get-acad-object)))))
  9.      (vla-put-ConfigName layObj "DWG To PDF.pc3")
  10.      (vla-RefreshPlotDeviceInfo layObj)
  11.      (vlax-invoke (vla-item (vla-get-layouts acDoc) "Model") 'GetCanonicalMediaNames)
  12.    )
  13.    (and
  14.      (setq L (apply 'append (mapcar ''((x)(if (wcmatch x "ISO_*") (list (splitstr x "_")))) (GetCanonicalMediaNames))))
  15.      (setq L (vl-remove-if-not ''((x) (= 6 (length x))) L))
  16.      (setq L (mapcar ''((x) (apply ''((a b c d e f) (list b (vl-string-left-trim "(" c) e)) x)) L))
  17.      (setq r L)
  18.    ); and
  19.    r
  20. ); defun GetISOpsizes
  21. ; _$ (shiftL '(a b c d e) t) -> (B C D E A)
  22. ; _$ (shiftL '(a b c d e) nil) -> (E A B C D)
  23. (setq shiftL '(( L f ) (if f (append (cdr L) (list (car L))) (cons (last L) (reverse (cdr (reverse L)))))))
  24. (setq msgf
  25.    '((x psL scL orn / ps sc ori )
  26.      ((eval x)
  27.        (strcat "\n"
  28.          "[A/D] Paper size: " (apply '(lambda (a b c) (strcat a " " b "x" c)) (setq ps (car psL))) " | "
  29.          "[-/+] Scale: " (strcat "1:" (setq sc (car scL))) " | "
  30.          "[TAB] Orientation: " (setq ori (car orn))
  31.        ); strcat
  32.      ); x
  33.      (list ps sc ori)
  34.    )
  35. ); setq msgf
  36. (setq _getrec
  37.    (lambda ( c sc / tmp tmpr )
  38.      (redraw)
  39.      (setq tmp (mapcar 'atof (cdar r)))
  40.      (if (/= "Landscape" (car orn)) (setq tmp (reverse tmp)))
  41.      (setq tmp (mapcar ''((x) (* (cond (sc) (1.)) (read (cadr r)) (/ x 2.))) tmp))
  42.      
  43.      (apply ''((a b c d) (grdraw a b 2 1) (grdraw b c 2 1) (grdraw c d 2 1) (grdraw d a 2 1))
  44.        (setq tmpr
  45.          (list
  46.            (mapcar '+ c tmp)
  47.            (mapcar '+ c (list (- (car tmp)) (cadr tmp)))
  48.            (mapcar '+ c (mapcar '- tmp))
  49.            (mapcar '+ c (list (car tmp) (- (cadr tmp))))
  50.          ); list
  51.        ); setq tmpr
  52.      ); mapcar
  53.      tmpr
  54.    )
  55. ); setq _getrec
  56. (defun LWPoly (lst cls) ; Lee Mac
  57.    (entmakex (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 (length lst)) (cons 70 cls)) (mapcar (function (lambda (p) (cons 10 p))) lst)))
  58. )
  59. (defun *error* ( m )
  60.    (redraw)
  61.    (and m (princ m)) (princ)
  62. ); defun *error*
  63. (setq psL ((lambda (L / nL) (foreach x L (cond ( (assoc (car x) nL) ) ( (setq nL (cons x nL)) ) )) (reverse nL)) (GetISOpsizes)))
  64. (setq scL (apply 'append (mapcar ''((a) (mapcar ''((b)(strcat (itoa b) a)) '(1 2 5))) '("" "0" "00" "000"))))
  65. (setq orn '("Landscape" "Portrait"))
  66. (setq r (msgf 'princ psL scL orn))
  67. (while (not s) (setq g (grread t))
  68.    (and (or (equal g '(2 13)) (= (car g) 25)) (setq s T))
  69.    (cond
  70.      (
  71.        (and (= (car g) 2)
  72.          (cond
  73.            ( (member g '((2 97)(2 65))) (setq psL (shiftL psL nil)) )
  74.            ( (member g '((2 100)(2 68))) (setq psL (shiftL psL t)) )
  75.            ( (equal g '(2 45)) (setq scL (shiftL scL nil)) )
  76.            ( (equal g '(2 43)) (setq scL (shiftL scL t)) )
  77.            ( (member g '((2 9)(2 32))) (setq orn (reverse orn)) )
  78.          ); cond
  79.          (setq r (msgf 'princ psL scL orn))
  80.        )
  81.      )
  82.      ( (= (car g) 5) (_getrec (cadr g) mysc) )
  83.      ( (= (car g) 3) (setq rec (_getrec (cadr g) mysc)) (setq s t) )
  84.    ); cond       
  85. ); while
  86. ; (apply 'msgf (cons 'alert (mapcar 'list r)))
  87. (and rec (LWPoly rec 1))
  88. (*error* nil) (princ)
  89. ); defun

 
我总是被grread的使用和列表操作所吸引。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:36:46 | 显示全部楼层
 
 
你把它压实得很好。我确实觉得边界很小,但对我来说又是早上六点,所以我现在也感觉很小。。。(你可能用英寸而不是毫米来计算)
 
 
gr.Rlx
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
262
发表于 2022-7-5 16:40:11 | 显示全部楼层
 
工作完美。
谢谢
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 16:45:51 | 显示全部楼层
 
谢谢,您可能会在那里找到一些有用的编码技巧——尽管当我开始添加子函数时它有点复杂。
 
 
 
我的单位设置为毫米,但我以厘米为单位工作(考虑到1个单位=1厘米)。
然而,我已经有了一个动态块,我用它来绘制标题栏(它有动态属性表,在那里我可以调整它的大小[A4-A0]和比例)。
因此,在编写它的时候,我刚刚对例程输出的矩形大小与我的块进行了视觉比较。
这就是为什么我在开头添加了一个变量,您可以在其中调整正确的结果:
  1. (setq mysc 0.1)
  2. (setq mysc nil)
  3. (setq mysc 10.)

 
但是如果没有“DWG-To-PDF.pc3”绘图仪,整个代码可能会失败。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:46:39 | 显示全部楼层
 
 
总是很乐意学习,尤其是关于“微小的lisp工具”(或一行程序),它们在您的代码中非常丰富。
 
 
由于我们的传统,这里不能有动态标题栏或边框,所以虽然我的大多数应用程序都能很好地使用较新的边框,但可以说,它们总是有“DOS支持”的负担。一些图纸仍然只能在tif或pdf上找到,所以想想我的生活有时有多可怕吧,哈哈
 
 
无论如何,谢谢你的意见。希望OP也喜欢。
 
 
gr.Rlx
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 23:56 , Processed in 0.408235 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表