-
Compteur de contenus
5 029 -
Inscription
-
Dernière visite
-
Jours gagnés
56
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par bonuscad
-
Incrément ID des données d'objets (OD)
bonuscad a répondu à un(e) sujet de Cadiste dans AutoCAD 2014
Décidément, un oubli de ma part. Je reposte le code complet. (defun inc_txt (Txt / Boucle Decalage Val_Txt) (setq Boucle 1 Val_txt "") (while (<= Boucle (strlen Txt)) (setq Ascii_Txt (vl-string-elt Txt (- (strlen Txt) Boucle))) (if (not Decalage) (setq Ascii_Txt (1+ Ascii_Txt)) ) (if (or (= Ascii_Txt 58) (= Ascii_Txt 91) (= Ascii_Txt 123)) (setq Ascii_Txt (cond ((= Ascii_Txt 58) 48) ((= Ascii_Txt 91) 65) ((= Ascii_Txt 123) 97) ) Decalage nil ) (setq Decalage T) ) (setq Val_Txt (strcat (chr Ascii_Txt) Val_Txt)) (setq Boucle (1+ Boucle)) ) (if (not Decalage) (setq Val_Txt (strcat (cond ((< Ascii_Txt 58) "0") ((< Ascii_Txt 91) "A") ((< Ascii_Txt 123) "a")) Val_Txt)) ) Val_Txt ) (defun c:numeroter ( / sv_zp n_ini js n ename nb nb_dec inc) ;; ;;Tapez (setq n_next nil) à la ligne de commande ;;pour faire une autre incrementation ;; (setq sv_zp (getvar "dimzin")) (setvar "dimzin" 4) (if (not n_next) (setq n_ini (getstring "\nIncrementer en débutant à [chiffre/lettre/alphanumérique]: ")) (setq n_ini n_next) ) (setq js (ssget '((0 . "INSERT") (2 . "AEP_RACCORD") (8 . "AEP_RACCORD")))) (cond (js (repeat (setq n (sslength js)) (setq ename (ssname js (setq n (1- n)))) (cond ((eq (type (read n_ini)) 'INT) (setq n_next (itoa (1+ (atoi n_ini)))) (ade_odsetfield ename "RACCORD" "IDRACCORD" 0 (atoi n_next)) ) ((eq (type (read n_ini)) 'REAL) (setq nb 0) (repeat (strlen n_ini) (if (eq (substr n_ini (setq nb (1+ nb)) 1) ".") (setq nb_dec (1- (strlen (substr n_ini nb)))) ) ) (setq inc 1.0) (repeat nb_dec (setq inc (/ inc 10))) (setq n_next (rtos (+ inc (atof n_ini)) 2 nb_dec)) (ade_odsetfield ename "RACCORD" "IDRACCORD" 0 (atof n_next)) ) ((eq (type n_ini) 'STR) (setq n_next (inc_txt n_ini)) (ade_odsetfield ename "RACCORD" "IDRACCORD" 0 n_next) ) ) (setq n_ini n_next) ) ) ) (setvar "dimzin" sv_zp) (print n_next) (prin1) ) -
Incrément ID des données d'objets (OD)
bonuscad a répondu à un(e) sujet de Cadiste dans AutoCAD 2014
Désolé, j'ai voulu faire court, donc je n'ai pas reposter dans le code pour la sélection multiple la fonction INC_TXT comme je l'avais fais pour le post #4. (comme la fonction ne subissait aucun changement, je n'ais pas joint lors du copier coller, l'intégralité du code) Tu peux donc le récupérer au post #4 (du début jusqu'à la ligne non incluse (defun c:numeroter (....) et l'inserer dans la proposition #9 -
Incrément ID des données d'objets (OD)
bonuscad a répondu à un(e) sujet de Cadiste dans AutoCAD 2014
Pour la boucle, je la ferais comme cela... mais je ne suis pas sur que ça convienne car tu n'es plus maître de l'ordre de l'incrémentation, à moins que l'ordre de la création des entités soient calqués sur celle de l'incrémentation...? (defun c:numeroter ( / sv_zp n_ini js n ename nb nb_dec inc) ;; ;;Tapez (setq n_next nil) à la ligne de commande ;;pour faire une autre incrementation ;; (setq sv_zp (getvar "dimzin")) (setvar "dimzin" 4) (if (not n_next) (setq n_ini (getstring "\nIncrementer en débutant à [chiffre/lettre/alphanumérique]: ")) (setq n_ini n_next) ) (setq js (ssget '((0 . "INSERT") (2 . "AEP_RACCORD") (8 . "AEP_RACCORD")))) (cond (js (repeat (setq n (sslength js)) (setq ename (ssname js (setq n (1- n)))) (cond ((eq (type (read n_ini)) 'INT) (setq n_next (itoa (1+ (atoi n_ini)))) (ade_odsetfield ename "RACCORD" "IDRACCORD" 0 (atoi n_next)) ) ((eq (type (read n_ini)) 'REAL) (setq nb 0) (repeat (strlen n_ini) (if (eq (substr n_ini (setq nb (1+ nb)) 1) ".") (setq nb_dec (1- (strlen (substr n_ini nb)))) ) ) (setq inc 1.0) (repeat nb_dec (setq inc (/ inc 10))) (setq n_next (rtos (+ inc (atof n_ini)) 2 nb_dec)) (ade_odsetfield ename "RACCORD" "IDRACCORD" 0 (atof n_next)) ) ((eq (type n_ini) 'STR) (setq n_next (inc_txt n_ini)) (ade_odsetfield ename "RACCORD" "IDRACCORD" 0 n_next) ) ) ) ) ) (setvar "dimzin" sv_zp) (print n_next) (prin1) ) -
Incrément ID des données d'objets (OD)
bonuscad a répondu à un(e) sujet de Cadiste dans AutoCAD 2014
Oui du moment que la table de données d'objet y est attachée, ce que je ne controle absolument pas dans le code (ce que j'ai bien dit; sommaire) Non, du tout! DIMZIN me sert à avoir un formatage des réels en texte correct. Il faut monter une boucle dans le code; je te laisse essayer... Pour ce cas précis (forcer réel ou entier en texte), je ne vois que l'usage du quote inversé [AlGr]+[7è`], ou autrement forcer l'usage dans le code (Cond 'INT 'REAL 'STR) Comme tu vois le code est loin d'être achevé, sécurisé. -
Incrément ID des données d'objets (OD)
bonuscad a répondu à un(e) sujet de Cadiste dans AutoCAD 2014
Je crois que tu as mal compris les explications de Gégématic... pour faire les changements, ce n'est pas la fonction proposée qu'il faut changer, mais le lisp de (gile). Autrement de façon sommaire, tu peux essayer ceci: (defun inc_txt (Txt / Boucle Decalage Val_Txt) (setq Boucle 1 Val_txt "") (while (<= Boucle (strlen Txt)) (setq Ascii_Txt (vl-string-elt Txt (- (strlen Txt) Boucle))) (if (not Decalage) (setq Ascii_Txt (1+ Ascii_Txt)) ) (if (or (= Ascii_Txt 58) (= Ascii_Txt 91) (= Ascii_Txt 123)) (setq Ascii_Txt (cond ((= Ascii_Txt 58) 48) ((= Ascii_Txt 91) 65) ((= Ascii_Txt 123) 97) ) Decalage nil ) (setq Decalage T) ) (setq Val_Txt (strcat (chr Ascii_Txt) Val_Txt)) (setq Boucle (1+ Boucle)) ) (if (not Decalage) (setq Val_Txt (strcat (cond ((< Ascii_Txt 58) "0") ((< Ascii_Txt 91) "A") ((< Ascii_Txt 123) "a")) Val_Txt)) ) Val_Txt ) (defun c:numeroter ( / sv_zp n_ini nb nb_dec inc) ;; ;;Tapez (setq n_next nil) à la ligne de commande ;;pour faire une autre incrementation ;; (setq sv_zp (getvar "dimzin")) (setvar "dimzin" 4) (if (not n_next) (setq n_ini (getstring "\nIncrementer en débutant à [chiffre/lettre/alphanumérique]: ")) (setq n_ini n_next) ) (cond ((eq (type (read n_ini)) 'INT) (setq n_next (itoa (1+ (atoi n_ini)))) (ade_odsetfield (car (entsel)) "RACCORD" "IDRACCORD" 0 (atoi n_next)) ) ((eq (type (read n_ini)) 'REAL) (setq nb 0) (repeat (strlen n_ini) (if (eq (substr n_ini (setq nb (1+ nb)) 1) ".") (setq nb_dec (1- (strlen (substr n_ini nb)))) ) ) (setq inc 1.0) (repeat nb_dec (setq inc (/ inc 10))) (setq n_next (rtos (+ inc (atof n_ini)) 2 nb_dec)) (ade_odsetfield (car (entsel)) "RACCORD" "IDRACCORD" 0 (atof n_next)) ) ((eq (type n_ini) 'STR) (setq n_next (inc_txt n_ini)) (ade_odsetfield (car (entsel)) "RACCORD" "IDRACCORD" 0 n_next) ) ) (setvar "dimzin" sv_zp) (print n_next) (prin1) ) -
Modification de l'Elevation de Cotations
bonuscad a répondu à un(e) sujet de lecrabe dans Routines LISP
En partie... Pas trop testé! autre que ton dessin. ((lambda ( / js n ent_dim dxf_ent recal_pt) (setq js (ssget '((0 . "DIMENSION")))) (cond (js (repeat (setq n (sslength js)) (setq ent_dim (ssname js (setq n (1- n)))) (setq dxf_ent (entget ent_dim)) (redraw ent_dim 3) (initget 1) (setq recal_pt (getpoint "\nDonner le point pour le recalage en Z: ")) (redraw ent_dim 4) (foreach n '(10 11 13 14) (entmod (setq dxf_ent (subst (cons n (list (car (cdr (assoc n dxf_ent))) (cadr (cdr (assoc n dxf_ent))) (caddr recal_pt))) (assoc n dxf_ent) dxf_ent ) ) ) ) ) ) ) (prin1) )) )) -
Pour moi, je le fais à travers un lancement automatique (s::startup). Ceci à l'avantage de les initialisées mêmes si les dessins on été concus avec un autre gabarit. Voir cette discussion
-
Imaginons que tu ais une polyligne (en montagne russe, ou pas) d'une dénivellée en Z de 530.6987 unités. En appliquant le code est en donnant un interval de 100 unités, et bien il va te dessiner tous les points qui seront à 100, 200, 300, 400 et 500 unités en Z sur la polyligne3D. A partir de là, tu pourrais par exemple faire passer manuellement tes courbes de niveaux par les points respectifs sans avoir besoin de construire un MNT et de l'interpoler. Donc sans Covadis ou autres applicatifs, ça peut rendre service pour des petits travaux. Bien avant, pour faire cela, je jouais avec la delimitation Avant et Arrière avec un écart très faible de la commande VUEDYN en vue de dessus; ca symbolisait des points virtuels qui me servaient de repères visuel de tracé (c'était il y a bien longtemps...)
-
Je reposte le code (en plus, il a peut être changé depuis le temps) Ca devrait aller mieux! (defun round_number (xr n / ) (* (fix (atof (rtos (* xr n) 2 0))) (/ 1.0 n)) ) (defun c:z_interval ( / js dxf_ent vla_obj n pt_lst z_value z_min z_max pt_int) (vl-load-com) (princ "\nSélectionnez une polyligne 3D.") (while (null (setq js (ssget "_+.:E:S" (list '(0 . "POLYLINE") (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) '(-4 . "&") '(70 . 8) ) ) ) ) (princ "\nCe n'est pas une polyligne 3D!") ) (setq dxf_ent (entget (ssname js 0)) vla_obj (vlax-ename->vla-object (cdar dxf_ent)) n -1 pt_lst nil ) (if (zerop (getvar "USERR1")) (setvar "USERR1" 1.0)) (initget 6) (setq z_value (getreal (strcat "\nEntrez l'interval en Z <" (rtos (getvar "USERR1")) ">: "))) (if (not z_value) (setq z_value (abs (getvar "USERR1")))) (setvar "USERR1" z_value) (repeat (fix (vlax-curve-getEndParam vla_obj)) (setq pt_lst (cons (vlax-curve-getPointAtParam vla_obj (setq n (1+ n))) pt_lst)) ) (if (zerop (boole 1 1 (cdr (assoc 70 dxf_ent)))) (setq pt_lst (cons (vlax-curve-getEndPoint vla_obj) pt_lst)) (setq pt_lst (cons (vlax-curve-getStartPoint vla_obj) pt_lst)) ) (while (cdr pt_lst) (setq z_min (round_number (min (caddar pt_lst) (car (cddadr pt_lst))) (/ 1 z_value)) z_max (max (caddar pt_lst) (car (cddadr pt_lst))) ) (while (< z_min z_max) (setq pt_int (inters (car pt_lst) (cadr pt_lst) (list (caar pt_lst) (cadar pt_lst) z_min) (list (caadr pt_lst) (cadadr pt_lst) z_min) T ) ) (if pt_int (entmake (list (cons 0 "POINT") (cons 100 "AcDbPoint") (cons 10 pt_int) (list 210 0.0 0.0 1.0) ) ) ) (setq z_min (+ z_min z_value)) ) (setq pt_lst (cdr pt_lst)) ) (prin1) )
-
Un peu différent, il y avait aussi ceci Attention au copier-coller car à l'époque le symbole < était mal interprété par le forum...
-
MAJ de données d'objets - Pb lenteur MAJ
bonuscad a répondu à un(e) sujet de Hyppolight dans VBA et VB
Bonjour, Je ne sais pas si ma réponse va t'aider, je ne pratique pas le NET. Cependant ce que j'ai lu dans la doc lisp de map (en anglais), est en résumé ceci: Il vaut mieux utiliser ade_odgetrecfield que ade_odgetfield, car ce premier est beaucoup plus rapide car il utilise directement l'ID du record pour aller "piocher" la valeur dans la base. Pour obtenir l'ID du record, c'est la fonction ade_odgetrecord. Dans la doc ils donnent les équivalences pour ADSRX, est ce qu'elles sont valables pour NET, j'en sais strictement rien... -
Visite virtuelle en 3D du Havre et son agglo
bonuscad a répondu à un(e) sujet de Turtle dans Pause café
J'ai eu aussi quelques problèmes avec firefox..., du coup j'ai essayé avec le navigateur Yandex (existe aussi pour smartphone et linux en 64bits), malgré un chargement un peu long, la navigation 3D devient plus aisée et plus réactive que sous firefox. Sympa la visite! -
Oui je me suis mal exprimé, en fait tout simplement, on considère qu'une liste, même constituée que d'élément vide est toujours VRAIE.
-
Je pense que la condition du if déclaré en (sssetfirst) bloque l'évalution. En effet en cas de succés (sssetfirst) ne renvoit pas True mais une liste contenant toujour en 1er élément un nil! (if (setq ss (ssget "_I" '((8 . "cotation")))) (sssetfirst nil ss) (sssetfirst nil (setq ss (ssget "_X" (list (cons 8 "cotation") (cons 410 (getvar "ctab")))))) ) Sous cette forme, ce sera mieux, comme l'avait écrit -Olivier- dans sa réponse #2
-
[Résolu] Petit problème de chargement de type de ligne
bonuscad a répondu à un(e) sujet de DenisHen dans Débuter en LISP
C'est bien de vouloir internationaliser son code, mais attention aux erreurs... (vl-cmdf "_-LINETYPE" "_LOAD" PosLst "Axians.lin" "") "load" n'est pas une option correcte pour une version Française, mais "_load" lui sera compris quelque soit la langue. -
Suppression de compte utilisateur
bonuscad a répondu à un(e) sujet de mateus dans Windows trucs et astuces
Bonjour, Pour avoir un succés possible, EVITER D'UTILISER LE PC. En effet plus tu l'utilises, plus tu risques de recouvrir les zones de données des fichiers effacés, donc une récupération incertaine de celle-ci. Faire une recherche sur Google avec UNDELETE, il existe plein de softs. Pour ma part j'ai utilisé une fois "undelete NTFS" avec succés sur un PC avec Seven d'une tierce personne. Bonne chance! -
Utiliser variable systeme dans un script
bonuscad a répondu à un(e) sujet de SF.Designer dans Personnalisation, macros, DIESEL
Si tu fais un setx /? dans la console, tu pourras voir (vers la fin) les remarques 2 et 3 -
Utiliser variable systeme dans un script
bonuscad a répondu à un(e) sujet de SF.Designer dans Personnalisation, macros, DIESEL
Bonjour, J'ai juste essayé par curiosité... J'ai donc fait setx MaVar "NOIR" Puis dans Autocad déjà lancé (avant d'avoir initialisé MaVar) (getenv "MaVar") Il m'a renvoyé "nil" J'ai fermé et relancé Autocad et ce coup-ci (getenv "MaVar") m'a bien retourné "NOIR". Donc (getenv) fonctionne bien si l'environnement a été déclaré avant le lancement d'Autocad. Cela va t-il te faire avancer les choses ?... -
Ce que tu souhaites faire: Décomposer un type de ligne en ligne, n'est pas possible. La seule solution que je percois (et qui n'est pas très pratique) est de faire une sortie traceur en fichier DXB (installer le pilote si celui-ci n'a jamais été utilisé). Une fois l'impression effectuée (avec les bons réglages) réimporter celui-ci avec la commande _DXBIN. A partir de là tu auras effectivement des lignes décomposées de ta représentation de type de ligne. Procédure fastidieuse, mais seul moyen pour obtenir ce résultat. Autrement dessiner le flexible avec un lisp. J'avais récupéré un lisp qui faisait cela, je te le met en ligne si ça peut le faire pour toi. ;;;=======================[ FlexDuct.lsp ]============================== ;;; Author: Copyright© 2007 Charles Alan Butler ;;; Contact or Updates @ www.TheSwamp.org ;;; Version: 1.3 October 6,2007 ;;; Purpose: Create Flex Duct from a centerline that the user picks ;;; Centerline may be anything vla-curve will handle ;;; Sub_Routines: ;;; makePline which creates a LW Polyline ;;; Restrictions: UCS is supported ;;; No layer support at this time ;;; No error handler at this time ;;; Known Issues: ;;; Tight curves cause the pline jacket to cross over ;;; Returns: none ;;;===================================================================== ;;; THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED ; ;;; WARRANTY. ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR ; ;;; PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED. ; ;;; ; ;;; You are hereby granted permission to use, copy and modify this ; ;;; software without charge, provided you do so exclusively for ; ;;; your own use or for use by others in your organization in the ; ;;; performance of their normal duties, and provided further that ; ;;; the above copyright notice appears in all copies and both that ; ;;; copyright notice and the limited warranty and restricted rights ; ;;; notice below appear in all supporting documentation. ; ;;;===================================================================== (defun c:Flex (/ cl-ent ribWidth RibShort RibLong collar dist steps ribFlag pt curAng curDer RibPtLst1 RibPtLst2 p1 p2 doc space cflag cl-len ribRadius tmp NewPline FlexLayer NewPtlst1 NewPtlst2 InsulThick ) (vl-load-com) (setq Doc (vla-get-activedocument (vlax-get-acad-object))) (vla-endundomark doc) (vla-startundomark doc) (setq Flexlayer "0") ; put your Duct layer here (setq InsulThick 0) ; to be added to duct diameter, use 2 for 1" insulation ;; -------- Local Functions --------- ;; Expects pts to be a list of 2D or 3D points (defun makePline (spc pts) (if (= (length (car pts)) 2) ; 2d point list (setq pts (apply 'append pts)) (setq pts (apply 'append (mapcar '(lambda (x) (list (car x) (cadr x))) pts)) ) ) (setq pts (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length pts)))) pts ) ) ) (vla-addlightweightpolyline spc pts) ) ;; ------------------------------------- ;; Get the Duct Diameter, global variable (or duct:dia (setq duct:dia 16.0)) ; default value (while ; Main Loop (progn (prompt (strcat "\nDuct diameter is set to " (vl-princ-to-string duct:dia))) (setvar "errno" 0) ; must pre set the errno to 0 (initget "Diametre _Diameter") (setq cl-ent (entsel "\nSelect center of flex duct.[Diameter] Enter to quit.") ) (cond ((= (getvar "errno") 52) ; exit if user pressed ENTER nil ; exit loop ) ((= cl-ent "Diameter") (initget (+ 2 4)) (setq tmp (getdist (strcat "\nSpecify duct diameter <" (rtos duct:dia) ">: ") ) ) (and tmp (setq duct:dia tmp)) t ; stay in loop ) ((not (null cl-ent)) ;; check entity before making the duct (if (not (vl-catch-all-error-p (setq tmp (vl-catch-all-apply 'vlax-curve-getpointatparam (list (car cl-ent) 0.0) ) ) ) ) (progn ; OK to make duct (setq cl-ent (car cl-ent) ; Center Line ribWidth (* duct:dia 0.167) RibShort (+ duct:dia InsulThick) ; add insulation RibLong (+ RibShort (* ribWidth 2)) ) ;; centerline length (setq cl-len (vlax-curve-getdistatparam cl-ent (vlax-curve-getendparam cl-ent) ) steps (/ cl-len ribWidth) ) (if (= (logand (fix steps) 1) 1) ; T = odd (setq steps (fix steps)) (setq steps (1+ (fix steps))) ) (setq ribWidth (/ (- cl-len 0.25) (1- steps)) collar (* 3 ribWidth) ; collar at each end dist 0.125 ; distance along center line ) (setq ribFlag 0 cflag t ) ;; ---------- Create Rib End Points ----------- (repeat steps (setq pt (vlax-curve-getpointatdist cl-ent dist)) (setq curDer (trans (vlax-curve-getfirstderiv cl-ent (vlax-curve-getparamatpoint cl-ent pt) ) 0 1 ) ) ;; Get angle 90 deg to curve (setq curAng (+ (/ pi 2) (angle '(0 0) curDer))) (setq ribRadius (if (zerop ribFlag) (/ RibShort 2) (/ RibLong 2))) (setq pt (trans pt 0 1)) ; WCS > UCS (setq p1 (polar pt curAng ribRadius)) (setq p2 (polar pt (+ pi curAng) ribRadius)) (if cflag ; create start collar points (setq RibPtLst1 (list (polar p1 (angle curDer '(0 0)) collar)) RibPtLst2 (list (polar p2 (angle curDer '(0 0)) collar)) cflag nil ) ) (setq RibPtLst1 (cons p1 RibPtLst1)) (setq RibPtLst2 (cons p2 RibPtLst2)) (setq ribFlag (- 1 ribFlag) dist (+ ribWidth dist) ) ) ;; create end collar points (setq RibPtLst1 (cons (polar p1 (angle '(0 0) curDer) collar) RibPtLst1) RibPtLst2 (cons (polar p2 (angle '(0 0) curDer) collar) RibPtLst2) ) ;; rearrange point lists (setq idx 0 NewPtlst1 nil NewPtlst2 nil ) (repeat (1- (length RibPtLst1)) (if (= (logand idx 1) 1) ; T = odd (setq NewPtlst1 (cons (nth idx RibPtLst2) NewPtlst1) NewPtlst1 (cons (nth (1+ idx) RibPtLst2) NewPtlst1) NewPtlst2 (cons (nth idx RibPtLst1) NewPtlst2) NewPtlst2 (cons (nth (1+ idx) RibPtLst1) NewPtlst2) ) (setq NewPtlst1 (cons (nth idx RibPtLst1) NewPtlst1) NewPtlst1 (cons (nth (1+ idx) RibPtLst1) NewPtlst1) NewPtlst2 (cons (nth idx RibPtLst2) NewPtlst2) NewPtlst2 (cons (nth (1+ idx) RibPtLst2) NewPtlst2) ) ) (setq idx (1+ idx)) ) ;; -------- point list to WCS ------------ (setq NewPtlst1 (mapcar '(lambda (x) (trans x 1 0)) NewPtlst1)) (setq NewPtlst2 (mapcar '(lambda (x) (trans x 1 0)) NewPtlst2)) ;; -------- create jacket plines ------------ (or space (setq space (if (zerop (vla-get-activespace doc)) (if (= (vla-get-mspace doc) :vlax-true) (vla-get-modelspace doc) ; active VP (vla-get-paperspace doc) ) (vla-get-modelspace doc) ) ) ) (setq newpline (makePline space NewPtlst1)) (vla-put-layer newpline Flexlayer) ;;(vla-put-elevation newpline z) (setq newpline (makePline space NewPtlst2)) (vla-put-layer newpline Flexlayer) ;;(vla-put-elevation newpline z) ) ; progn (princ "\nError - Can not use that object, Try again.") ) ; endif t ) (t (princ "\nMissed Try again.")) ) ; cond stmt ) ; progn ) ; while (vla-endundomark doc) (vlax-release-object space) (vlax-release-object doc) ;;----------- E N D O F L I S P ---------------------------- (princ) ) (prompt "\nFlex Duct loaded, Enter FLEX to run.") (princ)
-
[Résolu] macro "deplacer+copier"
bonuscad a répondu à un(e) sujet de Vince-34 dans Personnalisation, macros, DIESEL
Je n'ai pas vérifié la macro de Tramber, mais par sécurité sur les accroches objets je la modifierais comme ceci: ^C^C_select;\_move;_previous;;_none;35,0,0;;_copy;_previous;;_none;-70,0,0;;^Z -
A la 1ere ouverture, effectivement une grosse latence. Sur le fichier recevant l'Xref, j'ai fait la commande -PURGER (avec le tiret) et choisis R en option pour purger les applications ainsi que Tout. Enregistrer puis ré-ouvert, pour moi le temps de chargement à été divisé par 3 (grosso modo) Je te fais un zip, pour voir si pour toi ça va mieux. Plan Rhyuk.zip
-
Je n'en sais trop rien, peut lors de liaison d'Xref au dessin, puis avoir pioché dans les types de ligne devenu dispo pour les appliquer à des objets... Pour les supprimer? Filtrer ces objets par ces type de ligne, puis réaffecter au modèle similaire de acadiso.lin Puis purger.
-
Peut être, mais c'est pas le cas de tes type de ligne qui sont issus d'Xref.... Donc des liens (qui sont pas résolus) persiste dans ton dessin. Je crois qu'il ne faut pas chercher plus loin...
-
Ca serait interressant de voir ça, tu ne peux pas poster un extrait contenant ce genre de type de ligne? Se sont peut être des type de ligne complexe mal interprétés...
-
Pas forcément... Par contre si tu bosses avec des Xrefs penses à regarder XLOADPATH (mise sur un dossier de ton SSD, ça devrait le faire), et surtout la variable XLOADCTL que tu devrais mettre à 2. (comme ça le fichier est copié sur ton PC, en relation avec XLoadPath et les accés ne se feront plus par le réseau et en plus ça ne verrouille pas le fichier que tu as ouvert en xref si tes collègues ont besoin aussi de l'ouvrir) Une cause possible aussi est un ancien chemin enregistré (pour une image, config de traceur ou autre) qui n'existe plus (renomage de dossier, ou déplacement de fichier dans un autre dossier), à ce moment là AutoCad cherche dans tous les coins pour voir s'il peut retrouver l'objet manquant et avec le réseau ça rame...
