📄 door.clp
字号:
(defrule question1
(declare (salience 280))
=>
(printout t "do you want to build a door-model? yes or no" crlf)
(bind ?response1 (explode$ (readline)))
(assert (answer1 ?response1)))
(defrule question2
(declare (salience 270))
(answer1 yes)
=>
(printout t "Is your door a single-door or a double-door? single or double" crlf)
(bind ?response2 (explode$ (readline)))
(assert (answer2 ?response2)))
(defrule question3
(declare (salience 260))
(answer1 yes)
=>
(printout t "what's your door's height? Unit:mm (for example:2000)" crlf)
(bind ?doorheight (explode$ (readline)))
(assert (doorheight ?doorheight)))
(defrule question4
(declare (salience 250))
(answer1 yes)
=>
(printout t "what's your door's Width? Unit:mm (for example:900)" crlf)
(bind ?doorwidth (explode$ (readline)))
(assert (doorwidth ?doorwidth)))
(defrule question5
(declare (salience 240))
(answer1 yes)
=>
(printout t "what's your door's thickness? Unit:mm (for example:25)" crlf)
(bind ?doorthickness (explode$ (readline)))
(assert (doorthickness ?doorthickness)))
(defrule question6
(declare (salience 230))
(answer1 yes)
=>
(printout t "what's your doorframe's Width? Unit:mm (for example:45)" crlf)
(bind ?doorframewidth (explode$ (readline)))
(assert (doorframewidth ?doorframewidth)))
(defrule question7
(declare (salience 220))
(answer1 yes)
=>
(printout t "what's your doorframe's length? Unit:mm (for example:45)" crlf)
(bind ?doorframelength (explode$ (readline)))
(assert (doorframelength ?doorframelength)))
(defrule question8
(declare (salience 210))
(answer1 yes)
=>
(printout t "How high is your doorknob? Unit:mm (for example:900)" crlf)
(bind ?doorknobheight (explode$ (readline)))
(assert (doorknobheight ?doorknobheight)))
(defrule question9
(declare (salience 200))
(answer1 yes)
=>
(printout t "Do you want to have windows in your door? yes or no" crlf)
(bind ?windows (explode$ (readline)))
(assert (windows ?windows)))
(defrule question10
(declare (salience 190))
(answer1 yes)
(answer2 single)
(windows yes)
=>
(printout t "How many windows do you want in your door? 1 or 2" crlf)
(bind ?windowsNum (explode$ (readline)))
(assert (windowsNum ?windowsNum)))
(defrule question11
(declare (salience 180))
(answer1 yes)
(windows yes)
=>
(printout t "what's your window's width? Unit:mm (for example:300)" crlf)
(bind ?windowwidth (explode$ (readline)))
(assert (windowwidth ?windowwidth)))
(defrule question12
(declare (salience 170))
(answer1 yes)
(windows yes)
=>
(printout t "what's your window's height? Unit:mm (for example:300)" crlf)
(bind ?windowheight (explode$ (readline)))
(assert (windowheight ?windowheight)))
(defrule question13
(declare (salience 160))
(answer1 yes)
=>
(printout t "Do you want to have upperwindows in your door? yes or no" crlf)
(bind ?upperwindows (explode$ (readline)))
(assert (upperwindows ?upperwindows)))
(defrule question14
(declare (salience 150))
(answer1 yes)
(upperwindows yes)
=>
(printout t "what's your upperwindow's height? Unit:mm (for example:350)" crlf)
(bind ?upperwindowheight (explode$ (readline)))
(assert (upperwindowheight ?upperwindowheight)))
(defrule question15
(declare (salience 140))
(answer1 yes)
(upperwindows yes)
=>
(printout t "what's your middleframe's height? Unit:mm (for example:50)" crlf)
(bind ?middleframeheight (explode$ (readline)))
(assert (middleframeheight ?middleframeheight)))
(defrule question16
(declare (salience 130))
(answer1 yes)
(upperwindows yes)
=>
(printout t "what's your upperwindowframe's width? Unit:mm (for example:50)" crlf)
(bind ?upperwindowframewidth (explode$ (readline)))
(assert (upperwindowframewidth ?upperwindowframewidth)))
(defrule question17
(declare (salience 125))
(answer1 yes)
=>
(printout t "Please give me a path to place the DFA_FILE! (for example: f:\\MyDoor.dfa)" crlf)
(bind ?path (explode$ (readline)))
(assert (path ?path)))
(defrule step1
(declare (salience 120))
(answer1 yes)
(doorheight ?doorheight)
(doorwidth ?doorwidth)
(doorthickness ?doorthickness)
(doorframewidth ?doorframewidth)
(doorframelength ?doorframelength)
(doorknobheight ?doorknobheight)
(path ?path)
=>
(open ?path door_set "w")
(printout door_set "#! UG/KF 17.0" crlf)
(printout door_set "DefClass: Door (ug_base_part);" crlf)
(printout door_set "(Point Parameter) DoorOrigin: point(0,0,0);" crlf)
(printout door_set "(Number Parameter) DoorHeight: " ?doorheight ";" crlf)
(printout door_set "(Number Parameter) DoorWidth: " ?doorwidth ";" crlf)
(printout door_set "(Number Parameter) DoorThickness: " ?doorthickness ";" crlf)
(printout door_set "(Number Parameter) DoorFrameWidth: " ?doorframewidth ";" crlf)
(printout door_set "(Number Parameter) DoorFrameLength: " ?doorframelength ";" crlf)
(printout door_set "(Number Parameter) KnobHeight: " ?doorknobheight ";" crlf))
(defrule step2
(declare (salience 110))
(answer1 yes)
(windows yes)
(windowwidth ?windowwidth)
(windowheight ?windowheight)
(path ?path)
=>
(printout door_set "(Number Parameter) WindowWidth: " ?windowwidth ";" crlf)
(printout door_set "(Number Parameter) WindowHeight: " ?windowheight ";" crlf))
(defrule step3
(declare (salience 100))
(answer1 yes)
(upperwindows yes)
(upperwindowheight ?upperwindowheight)
(middleframeheight ?middleframeheight)
(upperwindowframewidth ?upperwindowframewidth)
(path ?path)
=>
(printout door_set "(Number Parameter) UpperWindowHeight: " ?upperwindowheight ";" crlf)
(printout door_set "(Number Parameter) MiddleFrameHeight: " ?middleframeheight ";" crlf)
(printout door_set "(Number Parameter) UpperWindowFrameWidth: " ?upperwindowframewidth ";" crlf))
(defrule step4
(declare (salience 90))
(answer1 yes)
(answer2 single)
(path ?path)
=>
(printout door_set "(Child) Door: {" crlf)
(printout door_set " class; ug_block;" crlf)
(printout door_set " Length; DoorThickness:;" crlf)
(printout door_set " Width; DoorWidth:;" crlf)
(printout door_set " Height; DoorHeight:;" crlf)
(printout door_set " Origin; DoorOrigin:;" crlf)
(printout door_set " };" crlf))
(defrule step5
(declare (salience 80))
(answer1 yes)
(answer2 single)
(windows yes)
(windowsNum 1)
(path ?path)
=>
(printout door_set "(Child) window: {" crlf)
(printout door_set " class; ug_block;" crlf)
(printout door_set " length; Doorthickness:;" crlf)
(printout door_set " width; WindowWidth:;" crlf)
(printout door_set " Height; WindowHeight:;" crlf)
(printout door_set " Origin; DoorOrigin: +" crlf)
(printout door_set " vector(0," crlf)
(printout door_set " (DoorWidth:-WindowWidth:)/2," crlf)
(printout door_set " DoorHeight:-child:height:-100);" crlf)
(printout door_set " Operation; Subtract;" crlf)
(printout door_set " Target; {Door:};" crlf)
(printout door_set " };" crlf))
(defrule step6
(declare (salience 70))
(answer1 yes)
(answer2 single)
(windows yes)
(windowsNum 2)
(path ?path)
=>
(printout door_set "(Child) window1: {" crlf)
(printout door_set " class; ug_block;" crlf)
(printout door_set " Length; DoorThickness:;" crlf)
(printout door_set " Width; WindowWidth:;" crlf)
(printout door_set " Height; WindowHeight:;" crlf)
(printout door_set " Origin; DoorOrigin: +" crlf)
(printout door_set " vector(0," crlf)
(printout door_set " (DoorWidth:-2*WindowWidth:)/3," crlf)
(printout door_set " DoorHeight:-child:height:-100);" crlf)
(printout door_set " Operation; Subtract;" crlf)
(printout door_set " Target; {Door:};" crlf)
(printout door_set " };" crlf)
(printout door_set "(Child) window2: {" crlf)
(printout door_set " class; ug_block;" crlf)
(printout door_set " Length; DoorThickness:;" crlf)
(printout door_set " Width; WindowWidth:;" crlf)
(printout door_set " Height; WindowHeight:;" crlf)
(printout door_set " Origin; DoorOrigin: +" crlf)
(printout door_set " vector(0," crlf)
(printout door_set " (DoorWidth:-2*WindowWidth:)" crlf)
(printout door_set " *2/3+WindowWidth:," crlf)
(printout door_set " DoorHeight:-child:height:-100);" crlf)
(printout door_set " Operation; Subtract;" crlf)
(printout door_set " Target; {Door:};" crlf)
(printout door_set " };" crlf))
(defrule step7
(declare (salience 60))
(answer1 yes)
(answer2 single)
(upperwindows yes)
(path ?path)
=>
(printout door_set "(Child) door_frame: {" crlf)
(printout door_set " class; ug_block;" crlf)
(printout door_set " Length; DoorFrameLength:;" crlf)
(printout door_set " Width; DoorWidth: + 4.0 + 2.0 * 35.0;" crlf)
(printout door_set " Height; DoorHeight: + 3 * 2.0" crlf)
(printout door_set " + MiddleFrameHeight: - 20.0" crlf)
(printout door_set " + UpperWindowHeight:+ 35.0;" crlf)
(printout door_set " Origin; DoorOrigin: + Vector(DoorThickness:-DoorFrameLength:,-2.0" crlf)
(printout door_set " -35.0,0);" crlf)
(printout door_set " };" crlf)
(printout door_set "(Child) door_frame_block1: {" crlf)
(printout door_set " class; ug_block;" crlf)
(printout door_set " Length; DoorThickness: + 2;" crlf)
(printout door_set " Width; DoorWidth: + 4;" crlf)
(printout door_set " Height;" crlf)
(printout door_set " DoorHeight: + 3 * 2.0 + MiddleFrameHeight: - 20.0" crlf)
(printout door_set " + UpperWindowHeight:;" crlf)
(printout door_set " Origin; DoorOrigin: + Vector(-2,-2,0);" crlf)
(printout door_set " Operation; Subtract;" crlf)
(printout door_set " Target; {door_frame:};" crlf)
(printout door_set " };" crlf)
(printout door_set "(Child) door_frame_block2: {" crlf)
(printout door_set " class; ug_block;" crlf)
(printout door_set " Length; 90 - (DoorThickness: + 2);" crlf)
(printout door_set " Width; DoorWidth: - 2 * 8;" crlf)
(printout door_set " Height;" crlf)
(printout door_set " DoorHeight: + 3 * 2.0 + MiddleFrameHeight: - 20.0" crlf)
(printout door_set " + UpperWindowHeight:+ 35.0 - 45.0;" crlf)
(printout door_set " Origin; DoorOrigin: + Vector(DoorThickness:-DoorFrameLength:,8,0);" crlf)
(printout door_set " Operation; Subtract;" crlf)
(printout door_set " Target; {door_frame:};" crlf)
(printout door_set " };" crlf)
(printout door_set "(Child) MiddleFrame_frame: {" crlf)
(printout door_set " class; ug_block;" crlf)
(printout door_set " Length; DoorFrameLength:;" crlf)
(printout door_set " Width; DoorWidth: + 4.0;" crlf)
(printout door_set " Height; MiddleFrameHeight:;" crlf)
(printout door_set " Origin; DoorOrigin: + Vector(DoorThickness: - DoorFrameLength:," crlf)
(printout door_set " -2.0,DoorHeight: - 8.0);" crlf)
(printout door_set " };" crlf)
(printout door_set "(Child) MiddleFrame_block1: {" crlf)
(printout door_set " class; ug_block;" crlf)
(printout door_set " Length; DoorThickness: + 2;" crlf)
(printout door_set " Width; DoorWidth: + 4;" crlf)
(printout door_set " Height; 10;" crlf)
(printout door_set " Origin; DoorOrigin: + Vector(-2.0,-2.0,DoorHeight: - 8.0);" crlf)
(printout door_set " Operation; Subtract;" crlf)
(printout door_set " Target; {MiddleFrame_frame:};" crlf)
(printout door_set " };" crlf)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -