Bhull1985 发表于 2022-7-6 06:13:45

打破LWPOLY的问题

您好,我在修改例程以打断多段线时遇到了一些困难。
 
我可以提取实体数据,并注意到有多个10。组码和我的功能是使用这些组码,而在之前,当它们刚刚断开线时,每个需要的点都有唯一的assoc组,我想这可能是我在这里遇到的问题。
 
如果有人可以看一下,我将发布3个文件,一个dcl+lisp来运行它,还有一个dwg,当插入到图形中的一条线时,它会崩溃。
 
提前感谢!
 
嗯,管理附件不起作用,但也许只要看看代码就足够了。
 
 

lsp:

(defun c:controlvalves (/ Dcl_Id% Folder$ Slides@ Slide1$ Slide2$ Slide3$ Slide4$ Slide5$ Slide6$ Slide7$ Slide8$ Slide9$ Slide10$ Slide11$ Slide12$ Slide13$ Slide14$ Slide15$ Slide16$ Slide17$ Slide18$ Slide19$ Slide20$ Slide21$ Slide22$ Slide23$ Slide24$ Slide25$ Return$ X# Y# ss a1 a2 a3 p2 p3 osm insertpt1 *error*)
   (defun *error* ( msg )
       (if osm (setvar 'OSMODE osm))
   (if (not (member msg '("Function cancelled" "quit / exit abort")))
       (princ (strcat "\nError: " msg))
   )
   (princ)
   )
   ; Set Default Variables
(setq Slides@ (list nil "ANGLE CONTROL VALVE" "BACKPRESSURE REGULATOR" "BALL-TYPE CONTROL VALVE" "BUTTERFLY CONTROL VALVE - HO" "BUTTERFLY CONTROL VALVE" "BUTTERFLY ON-OFF VALVE" "CONTROL VALVE WITH HAND ACTUATOR" "DIAPHRAGM ACTUATED CONTROL VALVE" "DOUBLE ACTING PISTON VALVE - AIR TO CLOSE AND OPEN" "GATE VALVE WITH BLEED VALVE AND PISTON ACTUATOR" "GLOBE CONTROL VALVE" "MOTOR OPERATED VALVE" "TWO-WAY MOTOR OPERATED BALL VALVE" "PILOT VALVE WITH MANUAL RESET" "PISTON OPERATED BALL VALVE" "PISTON OPERATED THREE-WAY VALVE" "PISTON OPERATED VALVE" "PRESSURE REDUCING REGULATOR" "BACKPRESSURE REGULATOR WITH EXTERNAL TAP" "PRESSURE REDUCING REGULATOR WITH EXTERNAL TAP" "TWO-WAY SOLENOID VALVE" "THREE-WAY CONTROL VALVE - HO" "THREE-WAY SOLENOID VALVE" "THREE-WAY-SOLENOID VALVE WITH MANUAL RESET" "FOUR-WAY SOLENOID VALVE")
      Slide1$ (nth 1 Slides@)
      Slide2$ (nth 2 Slides@)
      Slide3$ (nth 3 Slides@)
      Slide4$ (nth 4 Slides@)
      Slide5$ (nth 5 Slides@)
      Slide6$ (nth 6 Slides@)
      Slide7$ (nth 7 Slides@)
      Slide8$ (nth 8 Slides@)
      Slide9$ (nth 9 Slides@)
      Slide10$ (nth 10 Slides@)
      Slide11$ (nth 11 Slides@)
      Slide12$ (nth 12 Slides@)
      Slide13$ (nth 13 Slides@)
      Slide14$ (nth 14 Slides@)
      Slide15$ (nth 15 Slides@)
      Slide16$ (nth 16 Slides@)
      Slide17$ (nth 17 Slides@)
      Slide18$ (nth 18 Slides@)
      Slide19$ (nth 19 Slides@)
      Slide20$ (nth 20 Slides@)
      Slide21$ (nth 21 Slides@)
      Slide22$ (nth 22 Slides@)
      Slide23$ (nth 23 Slides@)
      Slide24$ (nth 24 Slides@)
      Slide25$ (nth 25 Slides@)
      Folder$ ""
      Return$ ""
);setq
   ; Load Dialog
(setq Dcl_Id% (load_dialog "controlvalves.dcl"))
(new_dialog "controlvalves" Dcl_Id%)
   ; Set Dialog Initial Settings
(set_tile "Title" "CONTROL VALVES")
(set_tile "ANGLE CONTROL VALVE" Slide1$)
(set_tile "BACKPRESSURE REGULATOR" Slide2$)
(set_tile "BALL-TYPE CONTROL VALVE" Slide3$)
(set_tile "BUTTERFLY CONTROL VALVE - HO" Slide4$)
(set_tile "BUTTERFLY CONTROL VALVE" Slide5$)
(set_tile "BUTTERFLY ON-OFF VALVE" Slide6$)
(set_tile "CONTROL VALVE WITH HAND ACTUATOR" Slide7$)
(set_tile "DIAPHRAGM ACTUATED CONTROL VALVE" Slide8$)
(set_tile "DOUBLE ACTING PISTON VALVE - AIR TO CLOSE AND OPEN" Slide9$)
(set_tile "GATE VALVE WITH BLEED VALVE AND PISTON ACTUATOR" Slide10$)
(set_tile "GLOBE CONTROL VALVE" Slide11$)
(set_tile "MOTOR OPERATED VALVE" Slide12$)
(set_tile "TWO-WAY MOTOR OPERATED BALL VALVE" Slide13$)
(set_tile "PILOT VALVE WITH MANUAL RESET" Slide14$)
(set_tile "PISTON OPERATED BALL VALVE" Slide15$)
(set_tile "PISTON OPERATED THREE-WAY VALVE" Slide16$)
(set_tile "PISTON OPERATED VALVE" Slide17$)
(set_tile "PRESSURE REDUCING REGULATOR" Slide18$)
(set_tile "BACKPRESSURE REGULATOR WITH EXTERNAL TAP" Slide19$)
(set_tile "PRESSURE REDUCING REGULATOR WITH EXTERNAL TAP" Slide20$)
(set_tile "TWO-WAY SOLENOID VALVE" Slide21$)
(set_tile "THREE-WAY CONTROL VALVE - HO" Slide22$)
(set_tile "THREE-WAY SOLENOID VALVE" Slide23$)
(set_tile "THREE-WAY-SOLENOID VALVE WITH MANUAL RESET" Slide24$)
(set_tile "FOUR-WAY SOLENOID VALVE" Slide25$)
   ; Adjust X# and Y# per image_buttom outline to fit slide_image
(start_image "Slide1")
(setq X# (- (dimx_tile "Slide1") 2))
(setq Y# (- (dimy_tile "Slide1") 2))
(end_image)
(start_image "Slide1")(slide_image 1 1 X# Y# (strcat Folder$ Slide1$))(end_image)
(start_image "Slide2")(slide_image 1 1 X# Y# (strcat Folder$ Slide2$))(end_image)
(start_image "Slide3")(slide_image 1 1 X# Y# (strcat Folder$ Slide3$))(end_image)
(start_image "Slide4")(slide_image 1 1 X# Y# (strcat Folder$ Slide4$))(end_image)
(start_image "Slide5")(slide_image 1 1 X# Y# (strcat Folder$ Slide5$))(end_image)
(start_image "Slide6")(slide_image 1 1 X# Y# (strcat Folder$ Slide6$))(end_image)
(start_image "Slide7")(slide_image 1 1 X# Y# (strcat Folder$ Slide7$))(end_image)
(start_image "Slide8")(slide_image 1 1 X# Y# (strcat Folder$ Slide8$))(end_image)
(start_image "Slide9")(slide_image 1 1 X# Y# (strcat Folder$ Slide9$))(end_image)
(start_image "Slide10")(slide_image 1 1 X# Y# (strcat Folder$ Slide10$))(end_image)
(start_image "Slide11")(slide_image 1 1 X# Y# (strcat Folder$ Slide11$))(end_image)
(start_image "Slide12")(slide_image 1 1 X# Y# (strcat Folder$ Slide12$))(end_image)
(start_image "Slide13")(slide_image 1 1 X# Y# (strcat Folder$ Slide13$))(end_image)
(start_image "Slide14")(slide_image 1 1 X# Y# (strcat Folder$ Slide14$))(end_image)
(start_image "Slide15")(slide_image 1 1 X# Y# (strcat Folder$ Slide15$))(end_image)
(start_image "Slide16")(slide_image 1 1 X# Y# (strcat Folder$ Slide16$))(end_image)
(start_image "Slide17")(slide_image 1 1 X# Y# (strcat Folder$ Slide17$))(end_image)
(start_image "Slide18")(slide_image 1 1 X# Y# (strcat Folder$ Slide18$))(end_image)
(start_image "Slide19")(slide_image 1 1 X# Y# (strcat Folder$ Slide19$))(end_image)
(start_image "Slide20")(slide_image 1 1 X# Y# (strcat Folder$ Slide20$))(end_image)
(start_image "Slide21")(slide_image 1 1 X# Y# (strcat Folder$ Slide21$))(end_image)
(start_image "Slide22")(slide_image 1 1 X# Y# (strcat Folder$ Slide22$))(end_image)
(start_image "Slide23")(slide_image 1 1 X# Y# (strcat Folder$ Slide23$))(end_image)
(start_image "Slide24")(slide_image 1 1 X# Y# (strcat Folder$ Slide24$))(end_image)
(start_image "Slide25")(slide_image 1 1 X# Y# (strcat Folder$ Slide25$))(end_image)
    ; Dialog Actions
(action_tile "Slide1" "(done_dialog 11)")
(action_tile "Slide2" "(done_dialog 12)")
(action_tile "Slide3" "(done_dialog 13)")
(action_tile "Slide4" "(done_dialog 14)")
(action_tile "Slide5" "(done_dialog 15)")
(action_tile "Slide6" "(done_dialog 16)")
(action_tile "Slide7" "(done_dialog 17)")
(action_tile "Slide8" "(done_dialog 18)")
(action_tile "Slide9" "(done_dialog 19)")
(action_tile "Slide10" "(done_dialog 20)")
(action_tile "Slide11" "(done_dialog 21)")
(action_tile "Slide12" "(done_dialog 22)")
(action_tile "Slide13" "(done_dialog 23)")
(action_tile "Slide14" "(done_dialog 24)")
(action_tile "Slide15" "(done_dialog 25)")
(action_tile "Slide16" "(done_dialog 26)")
(action_tile "Slide17" "(done_dialog 27)")
(action_tile "Slide18" "(done_dialog 28)")
(action_tile "Slide19" "(done_dialog 29)")
(action_tile "Slide20" "(done_dialog 30)")
(action_tile "Slide21" "(done_dialog 31)")
(action_tile "Slide22" "(done_dialog 32)")
(action_tile "Slide23" "(done_dialog 33)")
(action_tile "Slide24" "(done_dialog 34)")
(action_tile "Slide25" "(done_dialog 35)")
(action_tile "cancel" "(done_dialog 0)")   
(setq a1 (start_dialog))
(setq osm (getvar "osmode"))
(command "attreq" "0")
(if (and a1 (> a1 1))
(progn
(command "snap" "0.0625")
(if (/= 16384 (logand 16384 (getvar "osmode")))      ;set osmode
(setvar "osmode" (boole 6 (getvar "osmode") 16384))   ;set osmode
)         ;if
(setvar "osmode" 0)         ;set osmode
                     (if (not (tblsearch "layer" "Pid"))
                           (entmake
                              (list
                                 (cons 0 "Layer")
                                 (cons 100 "AcDbSymbolTableRecord")
                                 (cons 100 "AcDbLayerTableRecord")
                                 (cons 2 "Pid")
                                 (cons 70 0)
                                 (cons 62 4)
                                 (cons 6 "Continuous")
                               )       ;list
                              )       ;entmake
                         )      ;if
(setvar "clayer" "Pid")
(setvar "osmode" 512)
(if (setq insertpt1 (getpoint "\nPick Insertion Point: "))
(progn
   (cond
((= a1 11)(MySub "ANGLE CONTROL VALVE" 0.0000000001 -0.1250 insertpt1))   ;a1 11
((= a1 12)(MySub "BACKPRESSURE REGULATOR" 0.1250 -0.1250 insertpt1))   ;a1 12
((= a1 13)(MySub "BALL-TYPE CONTROL VALVE" 0.1250 -0.1250 insertpt1))   ;a1 13
((= a1 14)(MySub "BUTTERFLY CONTROL VALVE - HO" 0.1250 -0.1250 insertpt1))    ;a1 14
((= a1 15)(MySub "BUTTERFLY CONTROL VALVE" 0.1250 -0.1250 insertpt1))   ;a1 15
((= a1 16)(MySub "BUTTERFLY ON-OFF VALVE" 0.1250 -0.1250 insertpt1))   ;a1 16
((= a1 17)(MySub "CONTROL VALVE WITH HAND ACTUATOR" 0.1250 -0.1250 insertpt1))    ;a1 17
((= a1 18)(MySub "DIAPHRAGM ACTUATED CONTROL VALVE" 0.1250 -0.1250 insertpt1))    ;a1 18
((= a1 19)(MySub "DOUBLE ACTING PISTON VALVE - AIR TO CLOSE AND OPEN" 0.1250 -0.1250 insertpt1)) ;a1 19
((= a1 20)(MySub "GATE VALVE WITH BLEED VALVE AND PISTON ACTUATOR" 0.1250 -0.1250 insertpt1));a1 20
((= a1 21)(MySub "GLOBE CONTROL VALVE" 0.1250 -0.1250 insertpt1))   ;a1 21
((= a1 22)(MySub "MOTOR OPERATED VALVE" 0.1250 -0.1250 insertpt1))   ;a1 22
((= a1 23)(MySub "TWO-WAY MOTOR OPERATED BALL VALVE" 0.1250 -0.1250 insertpt1))    ;a1 23
((= a1 24)(MySub "PILOT VALVE WITH MANUAL RESET" 0.1250 -0.1250 insertpt1))    ;a1 24
((= a1 25)(MySub "PISTON OPERATED BALL VALVE" 0.1250 -0.1250 insertpt1))    ;a1 25
((= a1 26)(MySub "PISTON OPERATED THREE-WAY VALVE" 0.1250 -0.1250 insertpt1))    ;a1 26
((= a1 27)(MySub "PISTON OPERATED VALVE" 0.1250 -0.1250 insertpt1))   ;a1 27
((= a1 28)(MySub "PRESSURE REDUCING REGULATOR" 0.1250 -0.1250 insertpt1))    ;a1 28
((= a1 29)(MySub "BACKPRESSURE REGULATOR WITH EXTERNAL TAP" 0.1250 -0.1250 insertpt1))   ;a1 29
((= a1 30)(MySub "PRESSURE REDUCING REGULATOR WITH EXTERNAL TAP" 0.1250 -0.1250 insertpt1));a1 30
((= a1 31)(MySub "TWO-WAY SOLENOID VALVE" 0.1250 -0.1250 insertpt1))   ;a1 31
((= a1 32)(MySub "THREE-WAY CONTROL VALVE - HO" 0.1250 -0.1250 insertpt1))    ;a1 32
((= a1 33)(MySub "THREE-WAY SOLENOID VALVE" 0.1250 -0.1250 insertpt1))   ;a1 33
((= a1 34)(MySub "THREE-WAY-SOLENOID VALVE WITH MANUAL RESET" 0.1250 -0.1250 insertpt1));a1 34
((= a1 35)(MySub "FOUR-WAY SOLENOID VALVE" 0.1250 -0.1250 insertpt1))   ;a1 35
       )          ;cond
      )          ;progn
)          ;a1 1 if   
))          ;if progn for test
(setvar "osmode" osm)         ;reset snaps
(princ)         ;print clear
)         ;if
(defun MySub (a1 a2 a3 insertpt1 /)       ;subfunction
(setvar "osmode" 576)      
(command "_insert" a1 insertpt1 "" "" pause)   
(setvar "osmode" 0)   
(if (> a2 0.0)      
(progn      
(while (not ss)   
(setq ss (ssget "C" insertpt1 insertpt1 '((0 . "LWPOLYLINE"))))
)         ;while
(setq p3 insertpt1      
   p2 (angle (cdr (assoc 10 (entget (ssname ss 0))))
(cdr (assoc 10 (entget (ssname ss 0)))))   
)         ;setq
(command "break"         ;issue the break command
(ssname ss 0)         ;break entity
(polar p3 p2 a2)      ;break this distance
(polar p3 p2 a3)   
)      
(princ "\n......Selected....\n......Breaking Lines....")
)         ;progn
)         ;if
(princ "\n......Insertion Completed!")   
(princ)         ;print clear
)         ;MySub_01


 
dcl:
 

img : image_button
{
height = 3.11;
width = 11.00;
fixed_width = true;
fixed_height = true;
alignment = centered;
color = -2;
}
txt : text {fixed_width = true; alignment = centered; }
col : column {fixed_width = true; width = 25; }

controlvalves : dialog {
label = "CONTROL VALVES"; spacer;
: row
{
   : col
   {
: img { key = "Slide1"; } : txt { label = "Angle Control Valve"; } spacer_1;
: img { key = "Slide2"; } : txt { label = "Backpressure Regulator"; } spacer_1;
: img { key = "Slide3"; } : txt { label = "Ball-type Control Valve"; } spacer_1;
: img { key = "Slide4"; } : txt { label = "Butterfly Control Valve - HO"; } spacer_1;
: img { key = "Slide5"; } : txt { label = "Butterfly Control Valve"; }
   }
   : col
   {
: img { key = "Slide6"; } : txt { label = "Butterfly On-Off Valve"; } spacer_1;
: img { key = "Slide7"; } : txt { label = "Control Valve with Hand Act."; } spacer_1;
: img { key = "Slide8"; } : txt { label = "Diaphragm Actuated Control Valve"; } spacer_1;
: img { key = "Slide9"; } : txt { label = "Double Acting Piston Vlv- Air Op."; } spacer_1;
: img { key = "Slide10"; } : txt { label = "Gate Valve with Bleed Valve and Pist. Act."; }      
   }
   : col
   {
: img { key = "Slide11"; } : txt { label = "Globe Control Valve"; } spacer_1;
: img { key = "Slide12"; } : txt { label = "Motor Operated Valve"; } spacer_1;
: img { key = "Slide13"; } : txt { label = "Two-Way Motor Operated Ball Valve"; } spacer_1;
: img { key = "Slide14"; } : txt { label = "Pilot Valve with Manual Reset"; } spacer_1;
: img { key = "Slide15"; } : txt { label = "Piston Operated Ball Valve"; }
   }
   : col
   {
: img { key = "Slide16"; } : txt { label = "Pist. Op. Three-Way valve"; } spacer_1;
: img { key = "Slide17"; } : txt { label = "Pist. Operated Valve"; } spacer_1;
: img { key = "Slide18"; } : txt { label = "Pressure Reducing Regulator"; } spacer_1;
: img { key = "Slide19"; } : txt { label = "Backpressure Regulator w/External Tap"; } spacer_1;
: img { key = "Slide20"; } : txt { label = "Pressure-Reducing Regulator w/External Tap"; }
   }
   : col
   {
: img { key = "Slide21"; } : txt { label = "Two-Way Solenoid Valve"; } spacer_1;
: img { key = "Slide22"; } : txt { label = "Three-Way Control Valve- HO"; } spacer_1;
: img { key = "Slide23"; } : txt { label = "Three-Way Solenoid Valve"; } spacer_1;
: img { key = "Slide24"; } : txt { label = "Three-Way Solenoid Valve w/Manual Reset"; } spacer_1;
: img { key = "Slide25"; } : txt { label = "Four-Way Solenoid Valve"; }
   }
}
spacer; cancel_button;
}///controlvalves

hmsilva 发表于 2022-7-6 07:40:21

我的帮助没有解决问题?
 
亨里克
页: [1]
查看完整版本: 打破LWPOLY的问题