乐筑天下

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

[编程交流] 更新a。lsp帮助

[复制链接]

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:35:11 | 显示全部楼层 |阅读模式
我找到了一个例程来帮助我创建一个表。我在一条线上有点编号,我需要一个表格来显示这两个点编号之间的方位/距离。该表需要如下所示:
 
航程轴承
1000-1001 XX'xxdxx'XX“
 
我找到的程序几乎完成了我想做的一切。除了它只允许我从第1点开始,而不是从1000点开始。它做的另一件事是“关闭”系统。例如,当我选择点1、2、3、4时;它给了我一个1-2,2-3,3-4和4-1的课程表。我不想在最后结束。
 
有人能帮我修改一下吗。lsp文件来实现这一点?我对定制知之甚少。
 
(vl load com)
(定义C:轴承(/*错误*acsp ang atable cnt col dist item osm
点列表pt row table\U data tmp tmp\U data
degreeloc minuteloc secondloc AngString)
 
(defun*错误*(msg)
(如果(和消息
(不是
(成员消息
“(“控制台中断”函数已取消“退出/退出中止”)))
(princ(strcat“\n错误:“msg”)
)
(如果osm
(setvar“osmode”osm)
(普林斯)
)
 
(setq osm(getvar“osmode”))
(setvar“osmode”1)
 
(setq cnt 1)
(while(setq pt(getpoint
(strcat“\n>>指定点#”
(itoa cnt)
“按顺序(点击回车退出)>>”)
(setq point_列表(cons pt point_列表)
碳纳米管(1+碳纳米管))
)
(setq point_列表(反向point_列表))
 
(setq cnt 0)
(虽然(
(setq tmp(列表(strcat(itoa(1+cnt))”-(itoa(+cnt 2)))
(第n个cnt点列表)
(第n(1+cnt)点列表)
tmp_数据(cons tmp tmp_数据)
)
(setq cnt(1+cnt))
)
(setq tmp(列表(strcat(itoa(长度点_列表))“-1”)
(最后一点列表)
(car point_列表)
tmp_数据(cons tmp tmp_数据)
)
(setq tmp_数据(反向tmp_数据))
 
(每个项目tmp_数据
(setq ang(angtos(角度(cadr项目)(caddr项目))4)
degreeloc(vl字符串位置(ascii“d”)ang);“d”的位置
minuteloc(vl字符串位置(ascii“”)ang);'
secondloc(vl字符串位置(ascii“\”)ang);位置“
);setq公司
(如果((-minuteloc degreeloc)2)
(setq ang(vl string subst“d0”“d”ang));10秒以下加0
);如果
(if((-secondloc minuteloc)2)
(setq ang(vl string subst“'0”“'”ang));在10分钟内添加0
);如果
(setq AngString(vl string subst“°”d”ang);替换度符号
距离(距离(cadr项目)(caddr项目))
dist(strcat(rtos dist 2 2)“'”)
tmp(列表(车辆项目)和字符串距离)
table_数据(cons tmp table_数据)
);setq公司
);foreach公司
 
(setq)
table_数据(反向table_数据)
pt(getpoint“\n>>指定插入点>>”)
acsp(vla get block
(vla get activelayout
(vla获取activedocument
(vlax get acad object)))
 
atable(vlax invoke acsp’AddTable pt
(+2(长度表数据))
(长度(car table_数据))
(*(getvar“textsize”)2.0)
(*(getvar“textsize”)15)
);setq公司
(vla put REGENATITABLESUPPRESSED atable:vlax true)
(vla settextheight atable actitlerow(getvar“textsize”))
(vla settextheight atable acheaderrow(getvar“textsize”))
(vla settextheight atable acdatarow(getvar“textsize”))
(vla put VERTCELLMARRING atable(/(getvar“textsize”)4.25))
(vla settext atable 0 0“课程表”)
(vla settext atable 1 0“课程”)
(vla settext atable 1 1“轴承”)
(vla settext atable 1 2“距离”)
(setq第2行)
(foreach item table_数据
(setq列0)
(外汇x项目
(vla settext atable row col x)
(vla setcellalignment atable row col acMiddleCenter)
(setq列(1+列)))
(setq行(1+行))
)
 
(vla put REGENATITABLESUPPRESSED atable:vlax false)
 
(*错误*无)
 
(普林斯)
)
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-5 23:40:13 | 显示全部楼层
请使用代码标签。这是编辑中的英镑符号。
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:43:43 | 显示全部楼层
  1. (vl-load-com)
  2. (defun C:Bearings (/ *error* acsp ang atable cnt col dist item osm
  3. point_list pt row table_data tmp tmp_data
  4. degreeloc minuteloc secondloc AngString)
  5. (defun *error* (msg)
  6. (if (and msg
  7. (not
  8. (member msg
  9. '("console break" "Function cancelled" "quit / exit abort"))))
  10. (princ (strcat "\nError: " msg))
  11. )
  12. (if osm
  13. (setvar "osmode" osm))
  14. (princ)
  15. )
  16. (setq osm (getvar "osmode"))
  17. (setvar "osmode" 1)
  18. (setq cnt 1)
  19. (while (setq pt (getpoint
  20. (strcat "\n >> Specify point #"
  21. (itoa cnt)
  22. " by order (hit Enter to exit) >> ")))
  23. (setq point_list (cons pt point_list)
  24. cnt (1+ cnt))
  25. )
  26. (setq point_list (reverse point_list))
  27. (setq cnt 0)
  28. (while (<= cnt (- (length point_list) 2))
  29. (setq tmp (list (strcat (itoa (1+ cnt)) " - " (itoa (+ cnt 2)))
  30. (nth cnt point_list)
  31. (nth (1+ cnt) point_list))
  32. tmp_data (cons tmp tmp_data)
  33. )
  34. (setq cnt (1+ cnt))
  35. )
  36. (setq tmp (list (strcat (itoa (length point_list)) " - 1")
  37. (last point_list)
  38. (car point_list))
  39. tmp_data (cons tmp tmp_data)
  40. )
  41. (setq tmp_data (reverse tmp_data))
  42. (foreach item tmp_data
  43. (setq ang (angtos(angle (cadr item) (caddr item))4 4)
  44. degreeloc (vl-string-position (ascii "d") ang);location of "d"
  45. minuteloc (vl-string-position (ascii "'") ang);location of '
  46. secondloc (vl-string-position (ascii """) ang);location of "
  47. );setq
  48. (if (= (- minuteloc degreeloc) 2)
  49. (setq ang (vl-string-subst "d0" "d" ang));add 0 for seconds under 10
  50. );if
  51. (if (= (- secondloc minuteloc) 2)
  52. (setq ang (vl-string-subst "'0" "'" ang));add 0 for minutes under 10
  53. );if
  54. (setq AngString (vl-string-subst "°" "d" ang);Substitute degree symbol
  55. dist (distance (cadr item) (caddr item))
  56. dist (strcat (rtos dist 2 2) "' ")
  57. tmp (list (car item) AngString dist)
  58. table_data (cons tmp table_data)
  59. );setq
  60. );foreach
  61. (setq
  62. table_data (reverse table_data)
  63. pt (getpoint "\n >> Specify insertion point >> ")
  64. acsp (vla-get-block
  65. (vla-get-activelayout
  66. (vla-get-activedocument
  67. (vlax-get-acad-object))))
  68. atable (vlax-invoke acsp 'AddTable pt
  69. (+ 2 (length table_data))
  70. (length (car table_data))
  71. (* (getvar "textsize") 2.0)
  72. (* (getvar "textsize") 15))
  73. );setq
  74. (vla-put-regeneratetablesuppressed atable :vlax-true)
  75. (vla-settextheight atable actitlerow (getvar "textsize"))
  76. (vla-settextheight atable acheaderrow (getvar "textsize"))
  77. (vla-settextheight atable acdatarow (getvar "textsize"))
  78. (vla-put-vertcellmargin atable (/ (getvar "textsize") 4.25))
  79. (vla-settext atable 0 0 "COURSE TABLE")
  80. (vla-settext atable 1 0 "COURSE")
  81. (vla-settext atable 1 1 "BEARING")
  82. (vla-settext atable 1 2 "DISTANCE")
  83. (setq row 2)
  84. (foreach item table_data
  85. (setq col 0)
  86. (foreach x item
  87. (vla-settext atable row col x)
  88. (vla-setcellalignment atable row col acMiddleCenter)
  89. (setq col (1+ col)))
  90. (setq row (1+ row))
  91. )
  92. (vla-put-regeneratetablesuppressed atable :vlax-false)
  93. (*error* nil)
  94. (princ)
  95. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-5 23:46:08 | 显示全部楼层
我本想编辑你的第一篇帖子。不要介意。
 
您是否无法在civil 3d中完成此操作?它有许多漂亮的直线/圆弧表选项。
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:48:20 | 显示全部楼层
你在和一个Lisp程序的业余爱好者说话。我花了一段时间才明白你所说的代码标签是什么意思。
 
据我所知,您只能通过使用线标记而不是点来实现这一点。我做了很多研究,似乎没有一个可靠的答案,除非你能在2013年做到。
回复

使用道具 举报

9

主题

71

帖子

62

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:52:16 | 显示全部楼层
作为一名lisp定制爱好者,并不意味着你无法阅读以下内容:
http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南
 
但是,nvm哈哈
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:56:15 | 显示全部楼层
好吧,好吧,所以我没有读完整的论坛怎么做。除了继续评论我缺乏程序,有人能回答这个问题吗?
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:00:28 | 显示全部楼层
 
现在,没有必要让mnyrac生气。当然有人可以。
 
你这是什么意思
 
 
这是否意味着只有3段?
1000-1001
1001-1002
1002-1003
 
请务必包括代码的作者或您找到例程的链接。
 
欢迎来到mnyrac论坛
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 00:03:11 | 显示全部楼层
谢谢
 
是的,这就是我的意思。该例程也不允许我选择自己的点数(总是从点1开始)。
 
我至少在一两个月前发现了这种习惯,当然我不记得在哪里了。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:04:21 | 显示全部楼层
 
那好吧。明天我会发布代码[已经准备好修改代码,但我在办公室写了回来]。
真的很简单。如果你能等到那时。
 
否则,其他论坛成员将为您修复代码,然后您可以按字母顺序说出美国所有50个州,但颠倒过来。
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:11 , Processed in 0.623881 second(s), 72 queries .

© 2020-2025 乐筑天下

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