Aller au contenu

Réduire l\'échelle du type de ligne de 100


Messages recommandés

Posté(e)

Bonjour,

 

j'ai récupéré un plan d'un architecte.

Celui ci a utilisé un grand nombre d'échelle de type de ligne différentes (ex: 1; 5; 9; 10; 12; 15; 18; 20; 30; 40; 42; 50; 90; 100....)

Bien sur avec ces échelles de type de ligne et ma configuration, cela ne passe pas (les pointillés n'apparaissent pas)

 

Mais si je divise chaque echelle par 100 (5 devenant 0.05) alors l'affichage des pointillés de l'architecte apparraissent normallement.

 

Mon problème est de prendre en compte toutes les échelles que l'architecte aurait pu utiliser (et il en a utilisé un grand nombre)

 

y'aurait il moyen, par lisp d'appliquer cette division à toutes les echelles de type de ligne ?

 

PS : je ne peux pas utiliser les echelles d'annotation.

***********************

Rien ne sert de courrir, il faut partir à point.

Posté(e)

et ECHLTP ?

Ca ne marche pas dans ton cas ? Tu parles bien de l'espace objet ?

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Bonjour, as tu essayé en passant par la sélection rapide

 

tu sélectionnes toutes les lignes par exemple qui ont une échelle de type de ligne égale à "x" et tu changes tout d'un coup par "x/5"... non?

 

tu ne devrais pas en avoir pour longtemps.

 

@+

<IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG>

 

<a href=www.formu-lan.net>www.FormuLan.net

</a>

Posté(e)

Merci

Pour Tramber :

J'utilise Echltp, mais "mon" echltp" est défini pour "mes lignes"

l'architecte à utilisé un echlto propre avec lequel ses lignes apparaissent bien.

Faudrait presque 2 echltp différents.

 

Pour ARcasdk :

j'ai utilisé la sélection rapide.

Mais tu dis qu'il faut que je sélectionne toutes les lignes dont l'échelle est égale à X...

 

or ce x peut prendre un grand nombre de valeur différentes.

Et de plus, je n'ai pas de liste de toutes les valeurs que pourrait prendre ce fameux "x".

 

d'où l'idée d'un lisp qui diviserait par 100 la valeur de l'echelle de type de ligne, et ce, quelle que soit cette valeur

***********************

Rien ne sert de courrir, il faut partir à point.

Posté(e)

HELLO

 

bon premier lisp en vl-lisp

 

a toi de jouer sur le facteur d'echelle dans le lisp 100 multiplier ou diviser

 

 

 (defun c:mdel ()
 (vl-load-com)
 (setvar "cmdecho" 0)
 (setvar "dimzin" 0)
 (setvar "osmode" 0)
 (prompt "CLIQUER SUR LES ENTITES A MODIFIER :")
 (setq entites nil)
 (while (null entites) (setq entites (ssget)))
 (setq compt 0)
 (setq com (sslength entites))
 (while (< compt com)
   (progn (setq ent1 (ssname entites compt))
   (setq code1 (cdr (assoc -1 (entget ent1))))
   (setq ena1 (vlax-ename->vla-object code1))
   (setq proper1 (vlax-get-property ena1 'truecolor))
   (setq colorr (vlax-get-property proper1 'colorindex))
   (setq ligntype (vlax-get-property ena1 'linetype))
   (setq ligntypeech (vlax-get-property ena1 'linetypescale))
   )
 [surligneur]    (setq newligntypeech (* ligntypeech 100))
   ;;(setq newligntypeech (/ ligntypeech 100))[/surligneur]
   (vlax-put-property ena1 'linetypescale newligntypeech)
   (setq compt (1+ compt))
   (prompt (strcat "\rENTITE MODIFIEE : " (rtos compt 2 0) " SUR : " (rtos com 2 0) " "))
 )
)

 

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Ca marche parfaitement

 

Par contre serait il possible d'y apporter la modification suivante :

- Ne pas demander de sélectionner d'objet, mais appliquer le lisp à toutes les lignes automatiquement

- Demander le coéficient de division (ici 100 par ex)

- demander s'il faut multiplier ou diviser. (avec diviser par défaut)

 

 

Merci grandement de ton aide.

***********************

Rien ne sert de courrir, il faut partir à point.

Posté(e)

Salut

 

barbichette

PHILPHIL à répondu, c'est dommage dans le sens que c'est une occasion rêvée de se lancer dans le lisp plutôt que de demander quelque chose de tout cuit.

Ne pas demander de sélectionner d'objet, mais appliquer le lisp à toutes les lignes automatiquement

Tu fais tout lors de la sélection.

 

PHILPHIL

Tu peux largement simplifier ton code.

J'ai aussi remarqué que tu redéfinissais des variables et que tu ne remettais pas lesdites variables dans leurs états initiaux à la fin du lisp.

Comme tu utilises autolisp, reste en autolisp et modifie le code dxf 48

En vlisp, tu peux éviter d'utiliser vlax-ename->vla-object en utilisant une boucle vlax-for sur activeselectionset

Juste pour info, (vlax-put-property ena1 'linetypescale newligntypeech) = (vla-put-linetypescale ena1 newligntypeech)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

hello

 

patrick 35

 

c'est dommage pour barbichette mais pas pour moi ;)

 

oups ok pour les variables modifiees et non remis dans leurs etats initiaux

ca c'est un grosss oubli de ma part vu que je le fais dans mes autres LISP

 

pour le VLISP je suis nul en anglais

je me suis lancé dans la traduction en francais de l'aide ( fichier word ) mais j'ai pas eu bcp d'aide pour ca

donc je ne connais que tres peu de fonction VLISP

 

mais je vais potasser un peu celles dont tu viens de me parler patrick

 

merci

a+

 

phil

 

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

PHILPHIL à répondu, c'est dommage dans le sens que c'est une occasion rêvée de se lancer dans le lisp plutôt que de demander quelque chose de tout cuit.

 

Mais j'essaye.

 

Mais je pense être plus doué pour les macros Excel, car toutes mes modifs dans les lisp autocad mênent invariablement au même résultat -> plantage (heureusement ce ne sont souvent que des plantages du lisp)

 

Il est vrai, également, que je n'ai eu le temps (ou le loisir) de me pencher réellement sur le codage, et sur les astuces liées au codage.

La lecture des lisps que vous créez, ressemble pour moi à la lecture d'un texte en hébreux.

***********************

Rien ne sert de courrir, il faut partir à point.

Posté(e)

hello

 

normal que tu ne comprennes pas alors c'est du chinois

 

 

 

et pas de l'hebreux

 

t'inquiete pas pour moi aussi

 

italique = humour

 

a+

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Si tu as compris un langage de programmation, c'est déjà beaucoup.

Passer sur un autre type est juste un problème de traduction.

Il reste bien sur des subtilités, mais une boucle reste une boucle, un tableau de même, comme les récursives/itératives.

Il faut se donner du temps.

 

ps : pour diviser dans le lisp, plutôt que de poser une question Multiplier/diviser, tu peux aussi multiplier par 0.01

 

pps : hébreux, chinois, au début je pensais que c'était du cyrillique ;)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Salut

 

Je pensais que PHILPHIL aurait été plus réactif.

 

Donc, pour répondre à ton besoin

 

Version Autolisp

(defun c:ech(/ cmd ent js n val)
 (setq cmd (getvar "cmdecho")
n 0
 )
 (setvar "cmdecho" 0)
 (command "_.undo" "_group")
 (initget 2)
 (and	(setq val (getreal "\nVeuillez indiquer le facteur d'échelle multiplicateur : "))
(setq js (ssget))
   (while (setq ent (ssname js n))
     (setq ent (entget ent)
    ent (subst (cons 48 (* (cdr (assoc 48 ent)) val)) (assoc 48 ent) ent)
    n (1+ n)
     )
     (entmod ent)
   )
 )
 (command "_.undo" "_end")
 (setvar "cmdecho" cmd)
 (princ)
)

 

Version Vlisp

(defun c:ech(/ doc ent val)
 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (initget 2)
 (and	(setq val (getreal "\nVeuillez indiquer le facteur d'échelle multiplicateur : "))
(ssget)
   (progn
     (vlax-for ent (setq sel (vla-get-activeselectionset doc))
(vla-put-linetypescale ent (* (vla-get-linetypescale ent) val))
     )
     (vla-delete sel)
   )
 )
 (vla-endundomark doc)
 (princ)
)

 

Pour diviser par 100, tu mets un facteur multiplicateur de 0.01

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Bonjour, et merci

 

quelles sont les différences entre le Autolisp et le Vlisp ?

 

et par voie de conséquence, lequel de tes 2 codes, est il préférable que j'utilise ?

***********************

Rien ne sert de courrir, il faut partir à point.

Posté(e)

Re

 

Les deux ont le même résultat et la même logique.

Juste une préférence pour le vlisp car il est plus rapide en temps d'exécution qu'autolisp et en plus, pas besoin de toucher aux variables d'Autocad.

Ce qui fait qu'en cas d'erreur, de plantage ou autre, elles restent inchangées.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

hello

 

non non je ne me suis pas endormi sur le bord de la route lolll

 

disont qu'il a fallut que je sois plus réactif pour mon propre boulot ;)

 

merci d'avoir répondu patrick avec les deux version on va pouvoir apprendre

 

concernant ton lisp GEF je vais faire une tite demande si je peux me permetre

 

bonne soirée de boulot a vous

 

a+

phil

 

 

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité