jayare 发表于 2022-7-5 18:20:55

救命啊!编写代码(AUTOLISP)

大家好,我是autolisp中的noob,我需要帮助将代码放在一起,我假设使用已经生成的代码并合并IFAND语句生成旋转角度。代码只需要按顺序排列,但我无法将其拼凑在一起。如果有人能帮我,那太好了,我将不胜感激。提前谢谢你。
 
 
IFAND代码-
 
 
; 程序的这一部分设置了15 x 10的限制
(Defun c:IFAND()
(提示“\n请输入矩形的尺寸,不要超过15 X 10”)
(Setq num1(getreal“\n输入1到15之间的矩形宽度:”)
(如果(
(setq p1 num1)
)
(setq num2(getreal“\n输入1到10之间矩形的高度1:”)
(如果(
(setq p2 num2)
)
(如果(和(
(命令“矩形”p1 p2)
(提示“对不起!输入错误,请重试”)
)
)
 
 
 
旋转矩形-
 
;这将从中心点以指定的角度和距离绘制一个圆
; 然后以用户指定的次数围绕中心点排列该圆
 
(定义c:BC()
 
(setvar“cmdecho”0)
(命令“osmode”0)
(图表)
 
 
 
(setq CR1(getpoint“\n拾取单位圆的中心:”)
 
(setq Dia1(getdist“\n螺栓单位圆直径:”)
(setq L1(/拨号2));这将刻度盘更改为“半径”,以在距中心的给定距离处绘制一条线
 
(setq A1(getangle“\n输入角度:”))
 
(setq BH1(getreal“\n输入螺栓孔的直径:”)
(setq BH2(/BH1 2))
 
(setq A2(极性CR1 A1 L1));线路第二点
 
 
(命令行“CR1 A2”)
(命令“Circle”CR1“D”Dia1)
 
 
(命令“Circle”A2 BH2)
 
(命令“Array”“Last”“”“Polar”CR1“6”“360”“No”)
 
 
(普林斯)
 
)
 
 
这是说明
 

Cad64 发表于 2022-7-5 19:20:06

如果你在论坛的正确区域发帖,你会得到更多帮助。我已将您的线程移动到Autolisp部分:http://www.cadtutor.net/forum/forumdisplay.php?21-AutoLISP Visual LISP amp DCL
 
此外,请阅读代码发布指南:http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南

BIGAL 发表于 2022-7-5 19:45:25

看看我的帖子http://www.cadtutor.net/forum/showthread.php?94680-AutoLisp循环函数重新定义变量
 
Ps我的版本
 

; draw pits with 100mm walls aligned to line
; By Alan H 2011

(setq oldsnap (getvar "osmode"))
(setq oldlayer (getvar "clayer"))
(command "_layer" "n" "Design-Drainage-Pits" "c" 4 "Design-Drainage-Pits" "")
(setvar "clayer" "Design-Drainage-Pits")
(if (not AH:getval) (load "getval"))
(ah:getval "Please enter PitL m eg 0.9: " "   edit_width = 8;" "   edit_limit = 6;")
(setq pitl (Atof item))

(ah:getval "Please enter PitW eg 0.6: " "   edit_width = 8;" "   edit_limit = 6;")
(setq pitw (Atof item))

(setq pt1 (getpoint "\npick 1st point to place pit : "))
(setq pt2 (getpoint "\nPick 2nd point for orientation"))
(setvar "osmode" 0)
(setq pt7 (getpoint "\Pick pt on pit side : "))

(setq ang (angle pt1 pt2))
(setq ang5 (angle pt2 pt7))
(setq diffang (- ang ang5))

(if (> diffang 1.5707)
(setq ang2 (- ang 1.570796))
(setq ang2 (+ ang 1.570796))
)

(setq ang3 (+ ang 3.1415926))
(setq ang4 (- ang 1.570796))
(setq pt3 (polar pt1 ang PitL))
(setq pt4 (polar pt3 ang2 PitW))
(setq pt5 (polar pt4 ang3 PitL))


(command "pline" pt1 pt3 pt4 pt5 "c")

(setq pt6 (polar pt1 ang 50.0))
(command "offset" 0.1 pt4 pt6 "")

(setvar "osmode" oldsnap)
(setvar "clayer" oldlayer)
(princ)

 

;; InputDialog box with variable title
;; By Ah June 2012
;; code (ah:getval title)

(defun AH:getval (title width limit / fo)
(setq fname "C://acadtemp//getval.dcl")
(setq fo (open fname "w"))
(write-line "ddgetval : dialog {" fo)
(write-line " : row {" fo)
(write-line ": edit_box {" fo)
(write-line (strcat "    key = "(chr 34) "key1" (chr 34) ";") fo)
(write-line(strcat " label = "(chr 34) title (chr 34) ";")   fo)
; these can be replaced with shorter value etc
;(write-line "   edit_width = 18;" fo)
;(write-line "   edit_limit = 15;" fo)
(write-line width fo)
(write-line limit fo)
(write-line "   is_enabled = true;" fo)      
(write-line "    }" fo)
(write-line "}" fo)
(write-line "ok_only;}" fo)
(close fo)

(setq dcl_id (load_dialog"c:\\acadtemp\\getval"))
(if (not (new_dialog "ddgetval" dcl_id))
(exit))
(action_tile "key1" "(setq item $value)(done_dialog)")
(mode_tile "key1" 2)
(start_dialog)
; returns the value of item
)
页: [1]
查看完整版本: 救命啊!编写代码(AUTOLISP)