乐筑天下

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

[编程交流] 匹配注释比例

[复制链接]

21

主题

89

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 16:56:56 | 显示全部楼层 |阅读模式
大家好,我发现了一个非常有用的lisp来获取面积,它工作得很好。我只想做一些小改动(如果可能的话),根据当前注释比例匹配文本高度?
 
  1. ;
  2. ; Select closed polyline and place mtext with the room name and Area in m2
  3. ;
  4. ; How to use:
  5. ;         1. select polyline
  6. ;        2. type in room name
  7. ;                Note: the getstring function does not allow spaces, so use a _ underscore to seperate words
  8. ;        3  select insert point
  9. ;        4  Something similar to this will be placed with MTEXT
  10. ;                room_name
  11. ;                Area: 111.11 m2
  12. ;        5  MTEXT will be placed with no wrap, to current settings
  13. ;
  14. ; Created       
  15. ; 11-June-2003        YZ        
  16. ;        This code was taken from an internet web site. the original author was 'Jos van Doorn'.
  17. ;        Among other things, I have modified the program to use MTEXT.
  18. ;               
  19. (defun drtxt (/ rn tx ls vl lt ht lb hb nr pt)
  20. (setq tx (strcat "Area: "
  21.    (rtos (/ (getvar "area") 1000000) 2 2)
  22.    " m2"
  23.    )            
  24.    rn (getstring "\nRoom Name: ")
  25. )
  26. (setq ls (list (cons 1 tx))
  27.         vl (textbox ls)
  28.         vl (cadr vl)
  29.         lt (car vl)
  30.         ht (cadr vl)
  31.         vl (grread T)
  32.         nr (car vl)
  33.         pt (cadr vl)
  34. )
  35. (princ "\nInsert Point: ")
  36. (while (/= nr 3)
  37.    (command "redraw")
  38.    (grdraw pt (setq pt (polar pt 0 lt)) 7)
  39.    (grdraw pt (setq pt (polar pt (* pi 0.5) ht)) 7)
  40.    (grdraw pt (setq pt (polar pt pi lt)) 7)
  41.    (grdraw pt (polar pt (* pi 1.5) ht) 7)
  42.    (setq vl (grread T)
  43.   nr (car vl)
  44.   pt (cadr vl)
  45.    )
  46.    ) ;end while function
  47. (command "-mtext" pt "w" 0 rn tx "")
  48. (redraw)
  49. ) ; end drtxt function
  50. (defun c:pla ()
  51. (setvar "cmdecho" 0)
  52. (while (setq et
  53.    (car
  54.                 (entsel "\nSelect polyline: ")
  55.            ) ;end car function
  56. ) ;end setq function
  57. (command "area" "o" et)
  58. (drtxt)
  59. ) ; wnd while funtion
  60. (setvar "cmdecho" 1)
  61. (princ)
  62. ) ; end c:pla function
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 13:00 , Processed in 0.697399 second(s), 56 queries .

© 2020-2025 乐筑天下

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