how to use an old lisp

how to use an old lisp

mruPRQUJ
Advocate Advocate
1,201 Views
10 Replies
Message 1 of 11

how to use an old lisp

mruPRQUJ
Advocate
Advocate

Hi there,

 

There is a lisp which was downloaded a while ago. I do not know how to use it now.  Could you please provide some advice to me? Please see attached lisp, it was pasted below as well, thank you very much in advance. 🙂

 

;;
;;;
;;; By Dominic Panholzer
;;;
;;; Modified original TXTEXP.LSP from Express Tools
;;; Copyright © 1999 by Autodesk, Inc.
;; LINEXP.LSP modifications by CAD Studio
;;;
;;; Your use of this software is governed by the terms and conditions of the
;;; License Agreement you accepted prior to installation of this software.
;;; Please note that pursuant to the License Agreement for this software,
;;; "[c]opying of this computer program or its documentation except as
;;; permitted by this License is copyright infringement under the laws of
;;; your country. If you copy this computer program without permission of
;;; Autodesk, you are violating the law."
;;;
;;; AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
;;; AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
;;; MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
;;; DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
;;; UNINTERRUPTED OR ERROR FREE.
;;;
;;; Use, duplication, or disclosure by the U.S. Government is subject to
;;; restrictions set forth in FAR 52.227-19 (Commercial Computer
;;; Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
;;; (Rights in Technical Data and Computer Software), as applicable.
;;;
;;; ----------------------------------------------------------------
;;;
;;; External Functions:
;;;
;;; ACET-ERROR-INIT --> ACETUTIL.FAS Intializes bonus error routine
;;; ACET-ERROR-RESTORE --> ACETUTIL.FAS Restores old error routine
;;; ACET-GEOM-ZOOM-FOR-SELECT --> ACETUTIL.FAS Zoom boundry to include points given
;;; ACET-LAYER-LOCKED --> ACETUTIL.FAS Checks to see if layer is locked
;;; ACET-GEOM-PIXEL-UNIT --> ACETUTIL.FAS Size of pixel in drawing units
;;; ACET-GEOM-TEXTBOX --> ACETUTIL.FAS Returns the textbox for any text
;;; ACET-GEOM-MIDPOINT --> ACETUTIL.FAS Returns midpoint between two points
;;; ACET-GEOM-VIEW-POINTS --> ACETUTIL.FAS Returns corner points of screen or viewport
;;; ACET-STR-FORMAT --> ACETUTIL.ARX String builder
;;; ACET-WMFIN --> ACETUTIL.FAS Brings in WMF file
;;;

(defun c:linexp (/ grplst getgname blknm FLTR GLST GDICT SS VIEW UPLFT TMPFIL TBX
TMPFIL CNT PT1 PT2 ENT TXT TXTYP PTLST ZM LOCKED GNAM vpna vplocked)
(acet-error-init
(list
(list "cmdecho" 0
"highlight" 1
"osmode" 0
"Mirrtext" 1
"limcheck" 0
)
T
)
)

; --------------------- GROUP LIST FUNCTION ----------------------
; This function will return a list of all the group names in the
; drawing and their entity names in the form:
; ((<ename1> . <name1>) ... (<enamex> . <namex>))
; ----------------------------------------------------------------

(defun acet-txtexp-grplst (/ GRP ITM NAM ENT GLST)

(setq GRP (dictsearch (namedobjdict) "ACAD_GROUP"))
(while (setq ITM (car GRP)) ; While edata item is available
(if (= (car ITM) 3) ; if the item is a group name
(setq NAM (cdr ITM) ; get the name
GRP (cdr GRP) ; shorten the edata
ITM (car GRP) ; get the next item
ENT (cdr ITM) ; which is the ename
GRP (cdr GRP) ; shorten the edata
GLST ; store the ename and name
(if GLST
(append GLST (list (cons ENT NAM)))
(list (cons ENT NAM))
)
)
(setq GRP (cdr GRP)) ; else shorten the edata
)
)
GLST ; return the list
)

; ------------------- GET GROUP NAME FUNCTION --------------------
; This function returns a list of all the group names in GLST
; where ENT is a member. The list has the same form as GLST
; ----------------------------------------------------------------

(defun acet-txtexp-getgname (ENT GLST / GRP GDATA NAM NLST)
(if (and GLST (listp GLST))
(progn
(foreach GRP GLST
(setq GDATA (entget (car GRP)))
(foreach ITM GDATA ; step through the edata
(if (and
(= (car ITM) 340) ; if the item is a entity name
(eq (setq NAM (cdr ITM)) ENT) ; and the ename being looked for
)
(setq NLST ; store the ename and name
(if NLST
(append NLST (list (cons (car GRP) (cdr GRP))))
(list (cons (car GRP) (cdr GRP)))
)
)
)
)
)
)
)
NLST
)

; ----------------------------------------------------------------
; MAIN PROGRAM
; ----------------------------------------------------------------

(if (and ; Are we in plan view?
(equal (car (getvar "viewdir")) 0 0.00001)
(equal (cadr (getvar "viewdir")) 0 0.00001)
(> (caddr (getvar "viewdir")) 0)
)

(progn

(prompt "\nSelect lines to be EXPLODED: ")

(Setq FLTR '((-4 . "<AND")
(-4 . "<OR") ; filter for mtext and text
(0 . "MTEXT")
(0 . "TEXT")
(-4 . "OR>")
(-4 . "<NOT")
(102 . "{ACAD_REACTORS") ; and not leader text
(-4 . "NOT>")
(-4 . "AND>")
)
GLST (acet-txtexp-grplst) ; Get all the groups in drawing
GDICT (if GLST
(dictsearch (namedobjdict) "ACAD_GROUP")
)
SS (ssget); FLTR)
CNT 0
)
;; filter out the locked layers
(if SS
(setq SS (car (bns_ss_mod SS 1 T)))
) ;if

;; if we have anything left
(if SS
(progn
(setq CNT 0) ; Reset counter
(while (setq ENT (ssname SS CNT)) ; step through each object in set

(and
GLST ; if groups are present in the drawing
(setq GNAM (acet-txtexp-getgname ENT GLST)) ; and the text item is in one or more
(foreach GRP GNAM ; step through those groups
(command "_.-group" "_r" ; and remove the text item
(cdr GRP) ENT ""
)
)
)

(setq TBX (acet-geom-textbox (entget ENT) 0)) ; get textbox points

(setq TBX (mapcar '(lambda (x)
(trans x 1 0) ; convert the points to WCS
)
TBX
)
)

(setq PTLST (append PTLST TBX)) ; Build list of bounding box
; points for text items selected

(setq CNT (1+ CNT)) ; get the next text item
); while

(setq PTLST (mapcar '(lambda (x)
(trans x 0 1) ; convert all the points
) ; to the current ucs
PTLST
)
)

(if (setq ZM (acet-geom-zoom-for-select PTLST)) ; If current view does not contain
(progn ; all bounding box points
(setq ZM
(list
(list (- (caar ZM) (acet-geom-pixel-unit)) ; increase zoom area by
(- (cadar ZM) (acet-geom-pixel-unit)) ; one pixel width to
(caddar ZM) ; sure nothing will be lost
)
(list (+ (caadr ZM) (acet-geom-pixel-unit))
(+ (cadadr ZM) (acet-geom-pixel-unit))
(caddr (cadr zm))
)
)
)
(if (setq vpna (acet-currentviewport-ename))
(setq vplocked (acet-viewport-lock-set vpna nil))
);if
(command "_.zoom" "_w" (car ZM) (cadr ZM)) ; zoom to include text objects
)
)

(setq VIEW (acet-geom-view-points)
TMPFIL (strcat (getvar "tempprefix") "txtexp.wmf")
PT1 (acet-geom-midpoint (car view) (cadr view))
PT2 (list (car PT1) (cadadr VIEW))
)

(if (acet-layer-locked (getvar "clayer")) ; if current layer is locked
(progn
(command "_.layer" "_unl" (getvar "clayer") "") ; unlock it
(setq LOCKED T)
)
)

(command "_.mirror" SS "" PT1 PT2 "_y"
"_.WMFOUT" TMPFIL SS "")

(if (findfile tmpfil) ; Does WMF file exist?
(progn
(command "_.ERASE" SS "") ; erase the orignal text
(setq ss (acet-wmfin TMPFIL)) ; insert the WMF file
(command "_.mirror" ss "" PT1 PT2 "_y")
) ;progn
) ;if


(if LOCKED
(command "_.layer" "_lock" (getvar "clayer") "") ; relock if needed
) ;if

(if ZM (command "_.zoom" "_p")) ; Restore original view if needed
(if vplocked
(acet-viewport-lock-set vpna T) ;re-lock the viewport if needed.
);if
(prompt (acet-str-format "\n%1 object(s) have been exploded to lines." CNT))
(prompt "\nThe line objects have been placed on layer 0.")
)
)
)
(prompt "\nView needs to be in plan (0 0 1).")
);if equal
(acet-error-restore) ; Retsore values
(princ)
)


(princ)

0 Likes
Accepted solutions (2)
1,202 Views
10 Replies
Replies (10)
Message 2 of 11

pendean
Community Legend
Community Legend
Accepted solution
Message 3 of 11

mruPRQUJ
Advocate
Advocate

Hi there,

 

After exploding lines, the lines disappeared. Could you please provide some advice? the info is below

"1 object(s) have been exploded to lines.
The line objects have been placed on layer 0".

 

Many thanks.

0 Likes
Message 4 of 11

pendean
Community Legend
Community Legend

@mruPRQUJ wrote:

Hi there,

 

After exploding lines, the lines disappeared. Could you please provide some advice? the info is below

"1 object(s) have been exploded to lines.
The line objects have been placed on layer 0".

 

Many thanks.


I don't have access to your DWG file or line(s) in it, so the question is impossible to answer. Care to share?

0 Likes
Message 5 of 11

Kent1Cooper
Consultant
Consultant

@mruPRQUJ wrote:

.... After exploding lines, the lines disappeared. Could you please provide some advice? the info is below

"1 object(s) have been exploded to lines.
The line objects have been placed on layer 0".


Is it too obvious to ask whether Layer "0" is visible, i.e. thawed and turned on?

Kent Cooper, AIA
Message 6 of 11

mruPRQUJ
Advocate
Advocate

Hi there,

 

Please see attached files. It did not explode line. After exploding,

1. red and white lines were changed location only.

2. yellow line disappeared.

 

Did it work on your side? Many thanks.

0 Likes
Message 7 of 11

Kent1Cooper
Consultant
Consultant

If any of this is about text or shape inclusions in the linetype definitions, we can't really check without your shape file(s).  But ignoring that, for me, the ends of the yellow worked, but the dots in between disappeared.  The white "worked" in the sense that at least it didn't move, but what's the point with something of continuous linetype?  I didn't see anything in your red parts, but they're too short to show the linetype anyway, and look continuous, so they "worked" okay.  Doing something long enough for the linetype to show is just the yellow again.

 

I tried some other linetypes.  It seems the command doesn't like dots [really zero-length lines].  It worked with Dashed and Phantom and Hidden varieties, but linetypes with dots lost those in translation.

Kent Cooper, AIA
Message 8 of 11

mruPRQUJ
Advocate
Advocate

Hi there,

 

Sorry to reply to you so late, I am really busy.

Red and white linetype by layer, they are continuous line. I tried it again, both of them changed location, but did not explode linetype, many thanks.

0 Likes
Message 9 of 11

Kent1Cooper
Consultant
Consultant

@mruPRQUJ wrote:

....

Red and white linetype by layer, they are continuous line. .... both of them changed location, but did not explode linetype....


I don't understand.  What do you expect as a result of exploding a linetype when it's continuous?

 

None of the red or white parts moved for me.

Kent Cooper, AIA
0 Likes
Message 10 of 11

Kent1Cooper
Consultant
Consultant
Accepted solution

@Kent1Cooper wrote:

....

I tried some other linetypes.  It seems the command doesn't like dots [really zero-length lines].  It worked with Dashed and Phantom and Hidden varieties, but linetypes with dots lost those in translation.


I also find that it works [for me] with the "ACAD_DYNDIM_LINETYPE" linetype that is defined in your drawing, because while that looks like its pen-down segments are dots, they're actually very short non-zero-length segments that explode into very short Lines.  Can you redefine your "A" linetype to use the same, instead of zero-length pen-down segments?

Kent Cooper, AIA
Message 11 of 11

mruPRQUJ
Advocate
Advocate

Thank you very much all of you, it works now. 🙂

0 Likes