Message 1 of 8
Autolisp Code to run on startup help

Not applicable
11-26-2019
10:39 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello all.
Wondering if I can get some help with some autolisp code.
I would like the following to run on startup to limit users ability to modify and play with things they have been told not to! wondering if some of the experts in lisp programming could give it a quick look and highlight where I might be going wrong. it will be used on autocad 2019
the code is as follows:-
(defun S::STARTUP ()
(command
"undefine"
"refedit")
;undefine the Refedit command
(setvar "blockeditlock" 1)
; set blockeditlock variable to 1
(command
"undefine"
"blockeditlock")
(command
"undefine"
"refedit")
;undefine the Refedit command
(setvar "blockeditlock" 1)
; set blockeditlock variable to 1
(command
"undefine"
"blockeditlock")
;undefine blockedit lock command
(command
"undefine"
"explode")
;undefine the Explode command
(defun C:explode ( / lst1 en typ)
:After undefining the explode command we would then redefine it
(setq lst1 (list “07 REDUCER CONCENTRIC (left)” “07 REDUCER ECCENTRIC (left)” “10 REGULATOR BACK PRESS.” “10 REGULATOR BACK PRESS. (EX.TAP)” “10 REGULATOR PRESS. REDUCING” “10 REGULATOR PRESS. REDUCING (EX.TAP)” “A1BORDER” “ACT1” “ACT2” “ACT3” “ACT4” “ACT5” “AIR SEPARATOR” “ARROW” “ARROW-LARGE” “ARROW-SMALL” “BD1” “BD2” “BELLOWS” “BFV” “BREAK” “BYPASS VALVE” “CAP” “CAP - FILLET WELD” “CAP - QUICK RELEASE” “CAP SCREWED” “CHEMSEAL” “CLIENT APPROVAL” “CN BOUNDRY” “COALESCING FILTER” “DELUGE CONTROL VALVE” “DIFFERENTIAL PRESSURE REGULATOR” “DIVIDEBOX” “DOUBLE VANE DAMPER” “DRIVE” “DRIVE-GEAR” “DRIVE-TURBINE” “DRY BREAK” “DRY TANKER COUPLING” “EARTHBAR” “EJECTOR” “ELECTRIC HEATER” “EQUIP-TAG” “EXPJOINT” “FALL” “FAN-BLOWER” “FILTER” “FILTER REGULATOR” “FILTER-DUPLEX” “FLAG CONTINUE” “FLAG LH” “FLAG RH” “FLAMEARRESTOR” “FLANGE” “FLOPITOT” “FLOPOSD” “FLOTURBINE” “FLOVA” “FSG1” “FT” “FX” “G207” “GATE BYPASS VALVE” “GOGGLE VALVE” “HATCH-PRESSURE” “HEATEX-SPIRAL” “HOSE CON” “HOSE CON – CAP” “HX1” “INLINE” “INTERLOCK” “IPSV01N” “IPSV01N-INLINE” “LESSTHAN” “LINE SPEC CHANGE HORZ” “LINE SPEC CHANGE VERT” “LINETAG” “MIN FLOW” “MKV1” “MKV2” “MULTBOX” “MULTI VANE DAMPER” “NOZZLE” “NOZZLEMTR” “NOZZLE-VESSEL” “ORIFICE” “ORIFICE PLATE FLOW SENSOR” “ORIFICE PLATE NO SENSOR” “PARALLEL SLIDE VALVE” “PIPE BREAK” “PLATE HEAT EXCHANGER” “PLITE” “PLUG – SCREWED” “PRESSURE REDUCING VALVE” “PRVEXPCHAM” “PSV PILOT” “PSV TWIN EXHAUST” “PUMP-CENT” “PUMP-DIAPH” “PUMP-GEAR” “PUMP-GENERAL” “PUMP-HELROTOR” “PUMP-LIQJET” “PUMP-POSITIVE” “PUMP-RECIP” “PUMP-SCREW” “PURGELH” “PURGERH” “REGULATOR SPRING DIAPHRAM” “REVMARKER” “R-SPOOL” “SDNRV” “SEPARATOR” “SIDEENTRY” “SIGNAL CONTINUATION” “SILENCER” “SINGLE VANE DAMPER” “SINGLEFLOPITOT” “SLAM SHUT” “SLIDING PLATE VALVE” “SMALLT” “SPADE (CLOSED)” “SPADE (OPEN)” “SPECBLIND-NORMCLOSED” “SPECBLIND-NORMOPEN” “SPRAY” “SPRAYBALL” “STEAM-TRAP” “STRAINER-Y” “SWING SPEC BLIND” “TAG1” “TAG2” “TAG3” “TAG4” “TAGDASH” “THERMAL EXPAN COMP” “THERMAL EXPAN COMP – BLADDER” “TP” “TUNDISH 3” “TUNDISH-1” “TUNDISH-2” “ULT” “V01” “V01 INST” “V02” “V03” “V04A” “V04B” “V05” “V05 INST BALL” “V05 LOCK” “V06” “V07” “V08” “V09” “V11” “V12” “V13” “V14” “V143” “VBFLY” “V-CONE METER” “VENT-COWL” “VENT-OPEN” “VENTURI” “VGLOBE” “VNEEDLE”))
;list of block names that must NOT be exploded
"undefine"
"explode")
;undefine the Explode command
(defun C:explode ( / lst1 en typ)
:After undefining the explode command we would then redefine it
(setq lst1 (list “07 REDUCER CONCENTRIC (left)” “07 REDUCER ECCENTRIC (left)” “10 REGULATOR BACK PRESS.” “10 REGULATOR BACK PRESS. (EX.TAP)” “10 REGULATOR PRESS. REDUCING” “10 REGULATOR PRESS. REDUCING (EX.TAP)” “A1BORDER” “ACT1” “ACT2” “ACT3” “ACT4” “ACT5” “AIR SEPARATOR” “ARROW” “ARROW-LARGE” “ARROW-SMALL” “BD1” “BD2” “BELLOWS” “BFV” “BREAK” “BYPASS VALVE” “CAP” “CAP - FILLET WELD” “CAP - QUICK RELEASE” “CAP SCREWED” “CHEMSEAL” “CLIENT APPROVAL” “CN BOUNDRY” “COALESCING FILTER” “DELUGE CONTROL VALVE” “DIFFERENTIAL PRESSURE REGULATOR” “DIVIDEBOX” “DOUBLE VANE DAMPER” “DRIVE” “DRIVE-GEAR” “DRIVE-TURBINE” “DRY BREAK” “DRY TANKER COUPLING” “EARTHBAR” “EJECTOR” “ELECTRIC HEATER” “EQUIP-TAG” “EXPJOINT” “FALL” “FAN-BLOWER” “FILTER” “FILTER REGULATOR” “FILTER-DUPLEX” “FLAG CONTINUE” “FLAG LH” “FLAG RH” “FLAMEARRESTOR” “FLANGE” “FLOPITOT” “FLOPOSD” “FLOTURBINE” “FLOVA” “FSG1” “FT” “FX” “G207” “GATE BYPASS VALVE” “GOGGLE VALVE” “HATCH-PRESSURE” “HEATEX-SPIRAL” “HOSE CON” “HOSE CON – CAP” “HX1” “INLINE” “INTERLOCK” “IPSV01N” “IPSV01N-INLINE” “LESSTHAN” “LINE SPEC CHANGE HORZ” “LINE SPEC CHANGE VERT” “LINETAG” “MIN FLOW” “MKV1” “MKV2” “MULTBOX” “MULTI VANE DAMPER” “NOZZLE” “NOZZLEMTR” “NOZZLE-VESSEL” “ORIFICE” “ORIFICE PLATE FLOW SENSOR” “ORIFICE PLATE NO SENSOR” “PARALLEL SLIDE VALVE” “PIPE BREAK” “PLATE HEAT EXCHANGER” “PLITE” “PLUG – SCREWED” “PRESSURE REDUCING VALVE” “PRVEXPCHAM” “PSV PILOT” “PSV TWIN EXHAUST” “PUMP-CENT” “PUMP-DIAPH” “PUMP-GEAR” “PUMP-GENERAL” “PUMP-HELROTOR” “PUMP-LIQJET” “PUMP-POSITIVE” “PUMP-RECIP” “PUMP-SCREW” “PURGELH” “PURGERH” “REGULATOR SPRING DIAPHRAM” “REVMARKER” “R-SPOOL” “SDNRV” “SEPARATOR” “SIDEENTRY” “SIGNAL CONTINUATION” “SILENCER” “SINGLE VANE DAMPER” “SINGLEFLOPITOT” “SLAM SHUT” “SLIDING PLATE VALVE” “SMALLT” “SPADE (CLOSED)” “SPADE (OPEN)” “SPECBLIND-NORMCLOSED” “SPECBLIND-NORMOPEN” “SPRAY” “SPRAYBALL” “STEAM-TRAP” “STRAINER-Y” “SWING SPEC BLIND” “TAG1” “TAG2” “TAG3” “TAG4” “TAGDASH” “THERMAL EXPAN COMP” “THERMAL EXPAN COMP – BLADDER” “TP” “TUNDISH 3” “TUNDISH-1” “TUNDISH-2” “ULT” “V01” “V01 INST” “V02” “V03” “V04A” “V04B” “V05” “V05 INST BALL” “V05 LOCK” “V06” “V07” “V08” “V09” “V11” “V12” “V13” “V14” “V143” “VBFLY” “V-CONE METER” “VENT-COWL” “VENT-OPEN” “VENTURI” “VGLOBE” “VNEEDLE”))
;list of block names that must NOT be exploded
(setq en (car (entsel "\n Select block reference, polyline, dimension,
or mesh: ")))
;gets the block and mimics the explode prompt
(setq typ (entget en))
;get the entity data
(setq typ (cdr (assoc 2 typ)))
;get the block name
(if (member typ lst1)
;if the selected block name is a member of our list
(alert "\nThis Block Cannot be Exploded.
\n Refer to System Manager")
;inform the user
;if it is not
(progn
;do the following
(command ^c^c)
;cancel any commands
(command ".EXPLODE" en)
;explode the block
);progn
)
;if
(princ)
;finish clean
);defun
(princ)
;load clean
Many thanks in advance!!