• Ce forum est la traduction générée par la machine de www.cad3d.it/forum1 - la communauté italienne du design. Plusieurs termes ne sont pas traduits correctement.

Type de ligne de raccordement à l'échelle

  • Auteur du sujet Auteur du sujet Betoniera
  • Date de début Date de début

Betoniera

Guest
lorsque la quantité de conceptions dwg se produit, parfois, d'avoir des lignes de type avec échelle ne convient pas à mon design et différencié.
Par exemple, certaines lignes (type de ligne pointée) sont différenciées selon la même conception.
l'objectif est d'amener toutes les lignes à la ligne de type = 1 échelle avec un programme lisp.
individuellement, il est facile d'utiliser des propriétés.
mais je voudrais une procédure automatisée pour toute la conception: rapporter toutes les lignes à l'échelle de type ligne = 1
la variable ltscale n'est pas bonne car elle écaille proportionnellement toutes les lignes qui maintiennent l'écaille unique.
Je ne pouvais pas comprendre quelle variable intervenir pour rapporter toutes les lignes à l'échelle de type ligne = 1
Vous avez des suggestions ?
Merci, bonjour à tous
 
mais excuse... si ce ne sont que des lignes, pourquoi toutes les sélections et dans la palette des propriétés ont imposé la valeur de la ligne de type échelle à 1 ?
 
ltscale est l'échelle du type général de dwg
l'échelle linéaire de l'entité est différente, et dit que l'entité, à partir du facteur général ltscale est multiplié par le facteur type de l'entité.
cette valeur (si différente de 1) est déclarée dans le groupe 48 de l'entité, de toutes les entités (à cet égard, l'aide 2020 est très insuffisante)
 
Merci pour vos contributions
Au revoir.
la raison pour laquelle j'essaie de mettre en œuvre cette procédure est que j'ai réalisé une procédure de lisp de "normalisation" des fichiers importés d'autres.
dans cette normalisation, je change les citations, les échelles, les couches et autres choses pour les adapter à mon style.
Je voulais ajouter la normalisation des lignes. C'est tout.

Je vais essayer d'expérimenter avec le code de groupe 48
Bonjour.
 
pour le cristal
J'ai essayé d'insérer 2 lignes de point de tube, une avec facteur d'échelle 1 et une avec facteur d'échelle 3
Quelque chose de curieux arrive : S'ils examinent les données linéaires avec le facteur 3, je trouve le code de groupe 48 avec le facteur 3.
Si, à la place, ils examinent les données de ligne avec le facteur d'échelle 1, le code de groupe 48 n'est pas écrit, alors la commande "assoc 48" pour extraire le facteur d'échelle va mal.
C'est normal ? .
Bonjour.
 
"cette valeur (si différent de 1) est déclaré dans le groupe 48 de l'entité»
avant de changer, vérifiez la présence, si (/= (cdr (assoc 48 entités) zéro) puis passez au subst.
 
Bonjour.
hier J'ai essayé de filtrer un ssget général en le liant au code du groupe 48, sans résultat. Mais je crois que je n'y vais pas.
Tu veux un pourboire ?
J'écris (sget "x"((48 . "*")) mais il me renvoie le code d'erreur..
 
@cristallo essai avec (score "x" (cons 0 "ligne") '(-4 . "/) (cons 48 1))

Cependant, étant donné le but de Beton, je porterais toute la ligne de type = 1 sans filtrer aucune sorte d'entité
Code:
(setq a)
(répéter (setq n (longueur a))
(setpropertyvalue (ssname a (setq n (1- n))) "linetypescale" 1)
)
 
Bonjour tout le monde
Je mettais en œuvre le programme
- sélectionner le point 1
- le point de sélection 2
- sélectionner des lignes avec le code 48 différentes de 1 (setq ss1 (ssget "_c" p1 p2 ' ((0 . "line") (-4 . "/-) (48 . 1))
- le cycle de chaque entité pour changer le code de groupe, la régénération, etc.

vient gp, écrit 3 lignes et travaille.
Qu'est-ce que je dis ? .
Bonne Pâques à tous et merci gp.
Bonjour, la prochaine fois.
 
vient gp, écrit 3 lignes et travaille.
Qu'est-ce que je dis ? .
Comment ça ? Tu es encapsulé dans la réponse de quelqu'un qui a eu des compliments de Lee Mac, qu'est-ce qu'on en parle ?
- Oui. En dehors de cela, je n'imaginais pas que je pourrais construire une liste de filtres de cette façon (je l'ai lu et je tords encore mes yeux), mais le problème grave est que je ne prendrais pas seulement les lignes, puisque le groupe 48 est commun à toutes les entités.
J'ai essayé d'utiliser des wildcards dans la liste de filtrage (aide dit que vous pouvez faire) mais ça me fait toujours erreur..
 
... Je ne prendrais pas les lignes...

utilisation de ssget pour sélectionner des objets avec scalatypelinea différent de 1(setq a (sget "_x" (liste '(0 . "*line") '(-4 . "/) '(48 . 1)))
Sélectionner ligne, polyligne, lwpolyligne, spligne(setq a (ssget "_x" (liste '(-4 . "/) '(48 . 1)))
Sélectionner Tous objets(setq a (ssget "_x" (liste '(0 . "ligne,arc,cercle,texte,lwpolyline,spline,ellipse") '(-4 "/") '(48 . 1))
sélectionner la objets listés

:
 
Parlons-en :)
Ma connaissance vient de errer sur les forums où ils écrivent le gourou du lisp, si je vois quelque chose d'intéressant je prends des notes.
Rester debout CHAPITRE:
(ssget "_+.:s:e:l" '((0 . "line")))Explication du filtre:
Code:
:s permet la sélection une seule fois
+. inséré avant :s oblige ssget à rester en mode 'point', similaire à
qui choisit la voiture à 0
Fondamentalement vous sélectionnez avec pickbox et n'ouvrez pas la fenêtre de sélection
:et capture un objet à la fois via le panneau
sélection (pickbox) et non par la fenêtre
:l exclut les couches bloquées
_le dernier objet "visible" ajouté à la base de données
_ "underscore" lance la commande en anglais à partir de versions localisées
il est nécessaire avec wp :s mais pas avec x a cp i l p :e
_a tous (tous) comme "x", mais avec le filtre "geler"
vous permet de sélectionner tous les objets sur les couches dégivrées.
_b boîte - sélectionner tous les objets à l'intérieur ou traverser un rectangle spécifié par deux points.
si les points sont indiqués de droite à gauche, la case est équivalente à "croisement", sinon à "fenêtres"
:d duplicata, sinon les duplicata sont ignorés
: les couches négligées bloquées
:p vue sur la négligence
x recherche avancée (base de données de recherche complète), si vous ne fournissez pas de filtre ssget sélectionner tout
les entités de base de données, y compris les entités sur couches gelées et en dehors de l'écran visible.
De plus, à la commande « sélectionner des objets : » vous pouvez insérer ajouter, supprimer, annuler

Capture de type mixte(score "_x" (liste "(8 . "pippo") "(0 . "ligne") (cons 62 5))
(cible "x"(0 . "text,mtext,line,arc")(8 . "lines")
objets rouges et jaunes sur la couche de ligne:
(score "_x"((8 . "lignes") (-4) " .<or") "or="" (-4="" (62="" .="" 1)="" 2)="">")
</or")>sélectionner des objets sur deux calques
valeurs variables de sélection
(setq lay1 "pippo")
(setq lay2 "pluto")
(setq sel (ssget "_x" (list (cons 8 (strcat lay1 "," lay2)) (cons 0 "circle"))))
connaissant les noms des couches
(setq a (ssget "_x" (list '(8 . "pippo,pluto") (cons 0 "circle"))))

textes commençant par a et b(score "_x" ((0 . "text,mtext")(1 . "a*,b*"))
polilinee con archi(score "_:l" '((0 . "lwpolyline") (-4 . "<>") (42 . 0.0))
polyligne sans arcs
(ssget "_x" '((0 . "lwpolyline")(-4 . "<not")(-4 . "<>")(42 . 0.0)(-4 . "not>")))

sélectionner des objets sur un point(gâcher pt)
sélectionner les objets passant par le point «pt», avec tolérance (0.001)(obtenez "_c" (carte postale ' pt '1e-3 1e-3)
sélectionner les polylignes fermées (sget '(0 . "*polyline") (-4 . "&") (70 . 1))
...et mille autres combinaisons;)
 
Le manuel me manque !
C'est dans les filtres de liste que le manuel est très manquant. Il vous dit que vous pouvez le faire, mais il vous fait un exemple brouillon et les ferme.
déjà l'utilisation de (-4 . ) n'est pas expliquée, sur les conditions multiples alors il manque.
est la première fois que je vois l'utilisation de virgules dans le groupe d'entités (0 . "line, block") ou_o
puis utiliser (-4 . "<>) : Qu'est-ce que ça veut dire ?
vous les avez nichés un -4 non ouvert et fermé (et je comprends ici) mais le (-4 . "<>") (42 . 0.0) qu'est-ce que c'est? ?
S'il vous plaît, éclairez-nous.

J'ai appris le lisp sur le manuel (papier!!) de la version 12 (pas 2012.. les 12 proprement dits).
Je trouve l'aide 2010 lisp réductrice par rapport à celle de 12, celle de 2020 tout simplement basique. Une régression.
 
Qu'est-ce que c'est ?
dxf 42 se réfère à la courbure de la lwpolyline, si vous regardez un entget voir qu'il y a une valeur pour chaque vertex, si elle vaut 0.0 le segment est droit (pas < > 0.0)
en théorie, vous pourriez même faire autrement sans (-4 . ") (42 . 0.0)

Je le prends pour dire au revoir. SALUTO.gif
 
Merci à tous pour vos contributions
marquer qu'en testant avec le code de gp et dwg écrit par d'autres, parfois une erreur est générée que je ne voulais pas enquêter.
J'ai, cependant, conclu le programme de rechange suivant que je mets à disposition comme une alternative à gp.
Bonjour tout le monde

; transforme toutes les lignes en facteur d'échelle 1
(setq ss1 (ssget "x" ((0 . "ligne"))); sélectionnez toutes les lignes
compte 0 ;compteur de la navette
emax (longueur ss1) ;nombre
)
(alors que (< nombre emax) ; cycle pour chaque institution)
(setq en (nom ss1 nombre) ;prileva entita
; données privées
Code de la ligne 48
el1 (cons 48 1);définit la nouvelle échelle (48 1)
et (substance el1 el ed) ; remplace la nouvelle échelle
)
; régénère les entités
(nombre défini (1 + nombre)
);
 
bétoniera ciao
votre code, à première vue, devrait vous donner des erreurs, parce que lorsque l'entité a déjà line scale=1 groupe 48 n'existe pas, donc (setq el) devrait vous donner zéro et puis le subst va mal
 
Il devrait, mais il ne le donne pas.
Pour cette raison, je n'ai pas filtré le code 48.
en cas de doute, vous pouvez ajouter le filtre supplémentaire.
Bonjour.
 

Statistiques du forum

Sujets
58 521
Messages
499 056
Membres
104 110
Dernier membre
ChristianR

Membres en ligne

Aucun membre en ligne actuellement.
Retour
Haut