Lisp works with AutoCAD 2023 but not with 2024
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello everybody,
I use a lisp to lock and unlock all viewports. If I lock my viewports, they should turn green. When I unlock these, they turn red.
If I now use this lisp in AutoCAD 2023, there is nothing wrong and it works as expected.
When I use it now in AutoCAD 2024, the viewports turn white as soon as I lock them. When I unlock them, they turn red.
But the lisp is loaded and also added to the Startup Suite. If I load this lisp again, the problem is solved but if I open another drawing again (without closing the other drawing where I load the lisp again) I need to load the lisp again.
How is it possible that the lisp works correctly in 2023 but does not work in 2024 and I need to reload it every time.
thanks in advance for your comments
(vl-load-com)
(defun dxf (n ed) (cdr (assoc n ed)))
(defun c:vpl (/ AD COUNT ENT I PL SS TABNAME VP VPNO)
(setq ad (vla-get-activedocument (vlax-get-acad-object)))
(COMMAND "-LAYER" "N" "Viewport" "" "")
(COMMAND "-LAYER" "U" "Viewport" "" "")
(COMMAND "-LAYER" "PLOT" "N" "Viewport" "")
(COMMAND "-LAYER" "ON" "Viewport" "")
(vlax-for lay (vla-get-layouts ad)
(if (/= (setq TabName (strcase (vla-get-name lay))) "MODEL") ;_ end of /=
(progn
(if (setq ss (ssget
"X"
(list (cons 0 "viewport")
) ;_ end of list
) ;_ end of ssget
) ;_ end of setq
(progn
(setq count (sslength ss))
(setq i 0)
(if (> count 0)
(progn
(while (< i count)
(setq
ent (ssname ss
i
) ;_ end of ssname
) ;_ end of setq
(setq vpNo
(dxf
69
(entget
ent
) ;_ end of entget
) ;_ end of dxf
) ;_ end of setq
(if (> vpNo 1)
(progn
(setq vp (vlax-ename->vla-object
ent
) ;_ end of vlax-ename->vla-object
) ;_ end of setq
(if (= (vla-get-clipped
vp
) ;_ end of vla-get-clipped
:vlax-false
) ;_ end of =
(progn
(vla-put-color
vp
70
) ;_ end of vla-put-color
(vla-put-layer
vp
"Viewport"
) ;_ end of vla-put-layer
) ;_ end of progn
(progn
(setq
pl (entget
(dxf
340
(entget
ent
) ;_ end of entget
) ;_ end of dxf
) ;_ end of entget
) ;_ end of setq
;get clip entity
(setq pl (vlax-ename->vla-object
(dxf -1
pl
) ;_ end of dxf
) ;_ end of vlax-ename->vla-object
) ;_ end of setq
(vla-put-color
pl
70
) ;_ end of vla-put-color
(vla-put-layer
pl
"Viewport"
) ;_ end of vla-put-layer
(vla-put-color
vp
70
) ;_ end of vla-put-color
(vla-put-layer
vp
"Viewport"
) ;_ end of vla-put-layer
) ;_ end of progn
) ;_ end of if
(vla-put-displaylocked
vp
:vlax-true
) ;_ end of vla-put-displaylocked
(vla-update vp)
) ;_ end of progn
) ;_ end of if
(setq i (1+ i))
) ;_ end of while
) ;_ end of progn
) ;_ end of if
) ;_ end of progn
) ;_ end of if
) ;_ end of progn
) ;_ end of if
) ;_ end of vlax-for
) ;_ end of defun
(defun c:vpu (/ AD COUNT ENT I PL SS TABNAME VP VPNO)
(setq ad (vla-get-activedocument (vlax-get-acad-object)))
(COMMAND "-LAYER" "N" "Viewport" "" "")
(COMMAND "-LAYER" "U" "Viewport" "" "")
(COMMAND "-LAYER" "PLOT" "N" "Viewport" "")
(COMMAND "-LAYER" "ON" "Viewport" "")
(vlax-for lay (vla-get-layouts ad)
(if (/= (setq TabName (strcase (vla-get-name lay))) "MODEL") ;_ end of /=
(progn
(if (setq ss (ssget
"X"
(list (cons 0 "viewport")
) ;_ end of list
) ;_ end of ssget
) ;_ end of setq
(progn
(setq count (sslength ss))
(setq i 0)
(if (> count 0)
(progn
(while (< i count)
(setq
ent (ssname ss
i
) ;_ end of ssname
) ;_ end of setq
(setq vpNo
(dxf
69
(entget
ent
) ;_ end of entget
) ;_ end of dxf
) ;_ end of setq
(if (> vpNo 1)
(progn
(setq vp (vlax-ename->vla-object
ent
) ;_ end of vlax-ename->vla-object
) ;_ end of setq
(if (= (vla-get-clipped
vp
) ;_ end of vla-get-clipped
:vlax-false
) ;_ end of =
(progn
(vla-put-color
vp
1
) ;_ end of vla-put-color
; 3 green
(vla-put-layer
vp
"Viewport"
) ;_ end of vla-put-layer
) ;_ end of progn
(progn
(setq
pl (entget
(dxf
340
(entget
ent
) ;_ end of entget
) ;_ end of dxf
) ;_ end of entget
) ;_ end of setq
;get clip entity
(setq pl (vlax-ename->vla-object
(dxf -1
pl
) ;_ end of dxf
) ;_ end of vlax-ename->vla-object
) ;_ end of setq
(vla-put-color
pl
1
) ;_ end of vla-put-color
(vla-put-layer
pl
"Viewport"
) ;_ end of vla-put-layer
(vla-put-color
vp
1
) ;_ end of vla-put-color
; 3 green
(vla-put-layer
vp
"Viewport"
) ;_ end of vla-put-layer
) ;_ end of progn
) ;_ end of if
(vla-put-displaylocked
vp
:vlax-false
) ;_ end of vla-put-displaylocked
(vla-update vp)
) ;_ end of progn
) ;_ end of if
(setq i (1+ i))
) ;_ end of while
) ;_ end of progn
) ;_ end of if
) ;_ end of progn
) ;_ end of if
) ;_ end of progn
) ;_ end of if
) ;_ end of vlax-for
)