nzoro99 Posted January 23, 2022 Share Posted January 23, 2022 (edited) Hello, If I run each line of this section of code it works , but if I incorporate it in modified VPSEL lisp, it gets stacked somewhere. Lisp doesn't stop on error, neither on break toggle. I wonder if I need (else parameter in (if .and if I need else parameter indeed I don't know how tell the lisp continue to next item. (setq data ss1) (setq i 0) (repeat (sslength data) (setq e (ssname data i)) (if (and (< i (sslength data)) (equal "DIMENSION" (cdr (assoc 0 (entget e)))) ) (setq entdimnstyle (entget e)) (setq newdim (subst (cons 3 "NewDimension") (assoc 3 entdimnstyle) entdimnstyle ) (entmod newdim) ) (setq i (1+ i)) ) ) ) and here is the complete code ;;;---------------------------------------------------------------------------; ;;; ;;; vpsel.lsp ;;; ;;; By Jimmy Bergmark ;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved ;;; Website: www.jtbworld.com ;;; E-mail: info@jtbworld.com ;;; ;;; 2000-04-14 - First release ;;; Tested on AutoCAD 2000 ;;; ;;;---------------------------------------------------------------------------; ;;; DESCRIPTION ;;; ;;; Select all visible objects in selected or active paperspace viewport ;;; Works transparently when in modelspace and for polygonal viewports too ;;; Example1: ERASE ALL R 'VPC >>> Erase all in model except what is visible ;;; Example2: (command "erase" "all" "r" (c:vpc) "") ;;; Example3: VPC ERASE >>> VPC is run previous the command and the objects ;;; are also in previous selection set ;;; ;;; c:vpc - select all visible objects with crossing in viewport ;;; c:vpw - select all visible objects with window in viewport ;;;---------------------------------------------------------------------------; (defun c:vpttt () (vpselttt "C") (princ) ) (defun c:vpwttt () (vpselttt "W") (princ) ) (defun dxf (n ed) (cdr (assoc n ed))) (defun vpselttt (typ / ad ss ent vpno ok vpbl vpur msbl msur msul mslr ss1 pl nlist x n ) (vl-load-com) (setq ok t) (if (= (getvar "tilemode") 0) (progn (setq ad (vla-get-activedocument (vlax-get-acad-object))) (if (= (getvar "cvport") 1) (if (and (= (getvar "cmdactive") 0) (setq ss (ssget "_x" (list '(0 . "VIEWPORT")))) ) (progn (setq ent (ssname ss 2)) (setq vpno (dxf 69 (entget ent))) (vla-Display (vla-get-activepviewport ad) :vlax-true) (vla-put-mspace ad :vlax-true) (setvar "cvport" vpno) ) (progn (setq ok nil) ) ) (setq ent (vlax-vla-object->ename (vla-get-activepviewport ad))) ) (if (and ok (/= 1 (logand 1 (dxf 90 (setq ed (entget ent)))))) (progn (if (= (vla-get-clipped (vlax-ename->vla-object ent)) :vlax-false ) (progn (vla-getboundingbox (vla-get-activepviewport ad) 'vpbl 'vpur ) (setq msbl (trans (vlax-safearray->list vpbl) 3 2)) (setq msur (trans (vlax-safearray->list vpur) 3 2)) (setq msul (list (car msbl) (cadr msur))) (setq mslr (list (car msur) (cadr msbl))) (setq ss1 (ssget (strcat typ "P") (list msbl msul msur mslr)) ) ) ;;; (progn ;;; (setq pl (entget (dxf 340 (entget ent)))) ;;; (setq nlist nil) ;;; (foreach x pl ;;; (if (eq 10 (car x)) ;;; (setq nlist (cons (trans (cdr x) 3 2) nlist)) ;;; ) ;;; ) ;;; (setq ss1 (ssget (strcat typ "P") nlist)) ;;; ) ) (sssetfirst nil ss1) (if ss1 (setq n (sslength ss1)) (setq n 0) ) (princ n) (princ " found ") (if (and ss1 (= (getvar "cmdactive") 1)) ss1 ) ) ) ) ) ;;; (setq ss nil ss1 nil) (setq data ss1) (setq i 0) (repeat (sslength data) (setq e (ssname data i)) (if (and (< i (sslength data)) (equal "DIMENSION" (cdr (assoc 0 (entget e)))) ) (setq entdimnstyle (entget e)) (setq newdim (subst (cons 3 "NewDimension") (assoc 3 entdimnstyle) entdimnstyle ) (entmod newdim) ) (setq i (1+ i)) ) ) ) (princ) Thank you for the input! Edited January 23, 2022 by nzoro99 Quote Link to comment Share on other sites More sharing options...
nzoro99 Posted January 23, 2022 Author Share Posted January 23, 2022 This worked for me ;;;---------------------------------------------------------------------------; ;;; ;;; vpsel.lsp ;;; ;;; By Jimmy Bergmark ;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved ;;; Website: www.jtbworld.com ;;; E-mail: info@jtbworld.com ;;; ;;; 2000-04-14 - First release ;;; Tested on AutoCAD 2000 ;;; ;;;---------------------------------------------------------------------------; ;;; DESCRIPTION ;;; ;;; Select all visible objects in selected or active paperspace viewport ;;; Works transparently when in modelspace and for polygonal viewports too ;;; Example1: ERASE ALL R 'VPC >>> Erase all in model except what is visible ;;; Example2: (command "erase" "all" "r" (c:vpc) "") ;;; Example3: VPC ERASE >>> VPC is run previous the command and the objects ;;; are also in previous selection set ;;; ;;; c:vpc - select all visible objects with crossing in viewport ;;; c:vpw - select all visible objects with window in viewport ;;;---------------------------------------------------------------------------; (defun c:vpttt () (vpselttt "C") (princ) ) (defun c:vpwttt () (vpselttt "W") (princ) ) (defun dxf (n ed) (cdr (assoc n ed))) (defun vpselttt (typ / ad ss ent vpno ok vpbl vpur msbl msur msul mslr ss1 pl nlist x n ) (vl-load-com) (setq ok t) (if (= (getvar "tilemode") 0) (progn (setq ad (vla-get-activedocument (vlax-get-acad-object))) (if (= (getvar "cvport") 1) (if (and (= (getvar "cmdactive") 0) (setq ss (ssget "_x" (list '(0 . "VIEWPORT")))) ) (progn (setq ent (ssname ss 2)) (setq vpno (dxf 69 (entget ent))) (vla-Display (vla-get-activepviewport ad) :vlax-true) (vla-put-mspace ad :vlax-true) (setvar "cvport" vpno) ) (progn (setq ok nil) ) ) (setq ent (vlax-vla-object->ename (vla-get-activepviewport ad))) ) (if (and ok (/= 1 (logand 1 (dxf 90 (setq ed (entget ent)))))) (progn (if (= (vla-get-clipped (vlax-ename->vla-object ent)) :vlax-false ) (progn (vla-getboundingbox (vla-get-activepviewport ad) 'vpbl 'vpur ) (setq msbl (trans (vlax-safearray->list vpbl) 3 2)) (setq msur (trans (vlax-safearray->list vpur) 3 2)) (setq msul (list (car msbl) (cadr msur))) (setq mslr (list (car msur) (cadr msbl))) (setq ss1 (ssget (strcat typ "P") (list msbl msul msur mslr)) ) ) ;;; (progn ;;; (setq pl (entget (dxf 340 (entget ent)))) ;;; (setq nlist nil) ;;; (foreach x pl ;;; (if (eq 10 (car x)) ;;; (setq nlist (cons (trans (cdr x) 3 2) nlist)) ;;; ) ;;; ) ;;; (setq ss1 (ssget (strcat typ "P") nlist)) ;;; ) ) (sssetfirst nil ss1) (if ss1 (setq n (sslength ss1)) (setq n 0) ) (princ n) (princ " found ") (if (and ss1 (= (getvar "cmdactive") 1)) ss1 ) ) ) ) ) ;;; (setq ss nil ss1 nil) (setq data ss1) (setq i 0) (repeat (sslength data) (setq e (ssname data i)) (if (and (< i (sslength data)) (equal "DIMENSION" (cdr (assoc 0 (entget e)))) ) (progn (setq entdimnstyle (entget e)) (setq newdim (subst (cons 3 "NewDimension") (assoc 3 entdimnstyle) entdimnstyle ) ) (entmod newdim) (setq i (1+ i)) ) (setq i (1+ i)) ) ) ) (princ) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.