乐筑天下

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

[编程交流] 图纸平面图

[复制链接]

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 14:23:43 | 显示全部楼层 |阅读模式
每个需要绘制大量调查计划的人,CP、DP、RP都有不同的效率方法。我讨厌输入@,
 
  1. (defun C:BD  (/ LEN DEGS MINS SECS)
  2. (command "_.line" (getpoint "\nPick a starting point: ")
  3. ;And Copy this bit 100 times or so as necessary*******
  4.         (strcat "@" (rtos (getreal "\nType Length: ")) "<"
  5.        (if (= (setq DEGS (getstring "\nType Degrees: ")) "") "0" DEGS) "d"
  6.        (if (= (setq MINS (getstring "\nType Minutes: ")) "") "0" MINS) "'"
  7.        (if (= (setq SECS (getstring "\nType Seconds: ")) "") "0" SECS) """
  8.           )
  9. ;******************************************
  10. )
  11. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:27:50 | 显示全部楼层
非常感谢。
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 14:34:29 | 显示全部楼层
没问题-如果您需要解释代码的任何部分,只需大喊
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:39:10 | 显示全部楼层
是的,在我提出代码问题之前,我必须先花几个小时研究代码:-)
我面临的一个直接问题是,我通常有0度面向页面,但这段代码将其输出到右侧。这个集合在代码中的什么地方?我可以更改它吗?
那么非做什么?
助教。
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 14:40:16 | 显示全部楼层
 
我只是将度/分/秒的角度转换为弧度,并使用极性函数绘制点。因此,如果你想让0度垂直,只需将所有测量值移动(pi/2)rads(90度)。
 
 
  1. (Setq zzz 0)
  2. (command "_.line" (getpoint "\nPick a starting point: ")
  3.     (while (/= zzz 3)
  4.         (strcat "@" (rtos (getreal "\nType Length: ")) "<"
  5.        (if (= (setq DEGS (getstring "\nType Degrees: ")) "") "0" DEGS) "d"
  6.        (if (= (setq MINS (getstring "\nType Minutes: ")) "") "0" MINS) "'"
  7.        (if (= (setq SECS (getstring "\nType Seconds: ")) "") "0" SECS) """
  8.           )
  9.       (setq zzz (+ zzz 1)))

 
 
 
 
忽略OSNAP,以便打印点准确。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:46:31 | 显示全部楼层
再次感谢。这很方便,因为我之前得到了一些零长度的线。
我本应该问这个问题的同时还要问北纬0度的问题;极坐标逆时针计算,可以顺时针计算吗?我想可能是*-1,但那不起作用。。。
 
编辑:我很高兴你没有熬夜,-1起作用:
 
  1. (defun c:test (/ pt len deg mIs Sec Ang)
  2. (if (setq pt (getpoint "\nSelect Starting Point: "))
  3.    (progn
  4.      (command "_.line" "_non" pt)
  5.      (while
  6.        (and
  7.          (not (initget 2))
  8.          (setq len (getdist pt "\nSpecify Length: "))
  9.          (or (setq deg (getreal "\nDegrees: ")) (setq deg 0.))
  10.          (or (setq mIs (getreal "\nMinutes: ")) (setq mIs 0.))
  11.          (or (setq Sec (getreal "\nSeconds: ")) (setq Sec 0.))
  12.          (setq Ang (* pi (/ (+ deg (/ mIs 60.) (/ Sec 3600.)) 180.))
  13.                pt (polar pt Ang len)))
  14.        (command "_non" pt))
  15.      (command "")))
  16. (princ))
  17.         

 
谢谢你的帮助李
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 14:50:21 | 显示全部楼层
这样不行吗?
 
  1. (defun c:test (/ pt len deg mIs Sec Ang)
  2. (if (setq pt (getpoint "\nSelect Starting Point: "))
  3.    (progn
  4.      (command "_.line" "_non" pt)
  5.      (while
  6.        (and
  7.          (not (initget 2))
  8.          (setq len (getdist pt "\nSpecify Length: "))
  9.          (or (setq deg (getreal "\nDegrees: ")) (setq deg 0.))
  10.          (or (setq mIs (getreal "\nMinutes: ")) (setq mIs 0.))
  11.          (or (setq Sec (getreal "\nSeconds: ")) (setq Sec 0.))
  12.          [color=Red][b](setq Ang (* pi (/ (+ deg (/ mIs 60.) (/ Sec 3600.)) 180.))[/b][/color]
  13.                pt (polar pt [color=Blue][b](+ Ang (/ pi 2.))[/b][/color] len)))
  14.        (command "_non" pt))
  15.      (command "")))
  16. (princ))

 
编辑,很好的一个伴侣。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:54:16 | 显示全部楼层
另一种选择是查看ACAD系统变量AngBase和AngDir
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 14:57:21 | 显示全部楼层
这些变量看起来确实是“-pi/2”和“*-1”的更好替代品。只是不太确定如何实现它们。
 
旁白:李,我已经仔细研究了你的代码,我认为这一切都有道理!至于我自己写的。。。
只是出于兴趣,关于我最初发布的代码,在我看来,不运行另一个命令(例如polar命令)就不可能运行while循环。这是真的吗?
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 15:02:35 | 显示全部楼层
 
好主意,我没想到。
 
 
例如,只需一个测试语句,您就可以有一段时间的时间来观察以下代码(我能想到的最好的示例):
 
  1. (setq Ang (* pi (/ (+ deg (/ mIs 60.) (/ Sec 3600.)) 180.))
  2.                pt (polar pt (+ (* Ang -1.) (/ pi 2.)) len)))

 
请注意,WHILE语句只包含一个test语句,如果返回nil,则该语句将退出循环。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:53 , Processed in 0.327262 second(s), 72 queries .

© 2020-2025 乐筑天下

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