乐筑天下

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

[编程交流] 多重引线包络处理

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:26:32 | 显示全部楼层
 
如果你有耐心等待我的回应,这是可能的
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:32:59 | 显示全部楼层
下面是一个函数的草稿,用于确定具有文本内容的多重引线的文本框:
  1. [color=GREEN];; MLeader Textbox  -  Lee Mac[/color]
  2. [color=GREEN];; Returns four OCS points describing the textbox of the content for a given MLeader[/color]
  3. [color=GREEN];; ent - [ent] MLeader entity[/color]
  4. ([color=BLUE]defun[/color] LM:mleadertextbox ( ent [color=BLUE]/[/color] bpt enx hgt jus lst mat org prp rot wid )
  5.    ([color=BLUE]if[/color] ([color=BLUE]=[/color] [color=BLUE]acmtextcontent[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 172 ([color=BLUE]reverse[/color] ([color=BLUE]setq[/color] enx ([color=BLUE]entget[/color] ent))))))
  6.        ([color=BLUE]progn[/color]
  7.            ([color=BLUE]setq[/color] prp ([color=BLUE]list[/color] ([color=BLUE]cons[/color] 40 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 41 enx)))
  8.                            ([color=BLUE]cons[/color] 07 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 02 ([color=BLUE]entget[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 340 enx))))))
  9.                      )
  10.                  lst ([color=BLUE]vl-remove-if[/color] '[color=BLUE]null[/color]
  11.                          ([color=BLUE]mapcar[/color]
  12.                             '([color=BLUE]lambda[/color] ( str [color=BLUE]/[/color] box )
  13.                                  ([color=BLUE]if[/color] ([color=BLUE]setq[/color] box ([color=BLUE]textbox[/color] ([color=BLUE]cons[/color] ([color=BLUE]cons[/color] 1 str) prp)))
  14.                                      ([color=BLUE]mapcar[/color] '[color=BLUE]-[/color] ([color=BLUE]cadr[/color] box) ([color=BLUE]car[/color] box))
  15.                                  )
  16.                              )
  17.                              (LM:str->lst ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 304 enx)) [color=MAROON]"\\P"[/color])
  18.                          )
  19.                      )
  20.                  bpt ([color=BLUE]trans[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 12 enx)) 0 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 11 enx)))
  21.                  rot ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 042 enx))
  22.                  jus ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 171 enx))
  23.                  wid ([color=BLUE]apply[/color] '[color=BLUE]max[/color] ([color=BLUE]mapcar[/color] '[color=BLUE]car[/color] lst))
  24.                  hgt ([color=BLUE]+[/color] ([color=BLUE]apply[/color] '[color=BLUE]+[/color] ([color=BLUE]mapcar[/color] '[color=BLUE]cadr[/color] lst)) ([color=BLUE]*[/color] 0.68 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 45 enx)) ([color=BLUE]1-[/color] ([color=BLUE]length[/color] lst))))
  25.                  org ([color=BLUE]list[/color] ([color=BLUE]cond[/color] (([color=BLUE]member[/color] jus '(2 5 ) ([color=BLUE]/[/color] wid -2.0)) (([color=BLUE]member[/color] jus '(3 6 9)) ([color=BLUE]-[/color] wid))      (0.0))
  26.                            ([color=BLUE]cond[/color] (([color=BLUE]member[/color] jus '(1 2 3)) ([color=BLUE]-[/color] hgt))      (([color=BLUE]member[/color] jus '(4 5 6)) ([color=BLUE]/[/color] hgt -2.0)) (0.0))
  27.                      )
  28.                  mat ([color=BLUE]list[/color]
  29.                          ([color=BLUE]list[/color] ([color=BLUE]cos[/color] rot) ([color=BLUE]sin[/color] ([color=BLUE]-[/color] rot)) 0.0)
  30.                          ([color=BLUE]list[/color] ([color=BLUE]sin[/color] rot) ([color=BLUE]cos[/color] rot)     0.0)
  31.                         '(0.0 0.0 1.0)
  32.                      )
  33.            )
  34.            ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( p ) ([color=BLUE]mapcar[/color] '[color=BLUE]+[/color] (mxv mat p) bpt))
  35.                ([color=BLUE]list[/color] org
  36.                    ([color=BLUE]mapcar[/color] '[color=BLUE]+[/color] org ([color=BLUE]list[/color] wid   0))
  37.                    ([color=BLUE]mapcar[/color] '[color=BLUE]+[/color] org ([color=BLUE]list[/color] wid hgt))
  38.                    ([color=BLUE]mapcar[/color] '[color=BLUE]+[/color] org ([color=BLUE]list[/color] 0   hgt))
  39.                )
  40.            )
  41.        )
  42.    )
  43. )
  44. [color=GREEN];; String to List  -  Lee Mac[/color]
  45. [color=GREEN];; Separates a string using a given delimiter[/color]
  46. [color=GREEN];; str - [str] String to process[/color]
  47. [color=GREEN];; del - [str] Delimiter by which to separate the string[/color]
  48. [color=GREEN];; Returns: [lst] List of strings[/color]
  49. ([color=BLUE]defun[/color] LM:str->lst ( str del [color=BLUE]/[/color] pos )
  50.    ([color=BLUE]if[/color] ([color=BLUE]setq[/color] pos ([color=BLUE]vl-string-search[/color] del str))
  51.        ([color=BLUE]cons[/color] ([color=BLUE]substr[/color] str 1 pos) (LM:str->lst ([color=BLUE]substr[/color] str ([color=BLUE]+[/color] pos 1 ([color=BLUE]strlen[/color] del))) del))
  52.        ([color=BLUE]list[/color] str)
  53.    )
  54. )
  55. [color=GREEN];; Matrix x Vector  -  Vladimir Nesterovsky[/color]
  56. [color=GREEN];; Args: m - nxn matrix, v - vector in R^n[/color]
  57. ([color=BLUE]defun[/color] mxv ( m v )
  58.    ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( r ) ([color=BLUE]apply[/color] '[color=BLUE]+[/color] ([color=BLUE]mapcar[/color] '[color=BLUE]*[/color] r v))) m)
  59. )

 
和一个小测试程序:
  1. ([color=BLUE]defun[/color] c:test ( [color=BLUE]/[/color] e v )
  2.    ([color=BLUE]if[/color] ([color=BLUE]setq[/color] e ([color=BLUE]ssget[/color] [color=MAROON]"_+.:E:S"[/color] '((0 . [color=MAROON]"MULTILEADER"[/color]))))
  3.        ([color=BLUE]progn[/color]
  4.            ([color=BLUE]setq[/color] e ([color=BLUE]ssname[/color] e 0)
  5.                  v ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 11 ([color=BLUE]entget[/color] e)))
  6.            )
  7.            ([color=BLUE]foreach[/color] x (LM:mleadertextbox e)
  8.                ([color=BLUE]entmake[/color] ([color=BLUE]list[/color] '(0 . [color=MAROON]"POINT"[/color]) ([color=BLUE]cons[/color] 10 ([color=BLUE]trans[/color] x v 0))))
  9.            )
  10.        )
  11.    )
  12.    ([color=BLUE]princ[/color])
  13. )
回复

使用道具 举报

2

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 18:38:54 | 显示全部楼层
 
尊敬的LeeMac:
非常感谢。非常感谢你及时的帮助!
回复

使用道具 举报

55

主题

325

帖子

274

银币

后起之秀

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

铜币
280
发表于 2022-7-5 18:42:12 | 显示全部楼层
为了消除步骤,在图形中放置多重引线时,是否有方法确定多重引线文本的边界?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-16 14:09 , Processed in 0.435204 second(s), 69 queries .

© 2020-2025 乐筑天下

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