• 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.

Problème de la couche de changement

carmelo81

Guest
Au revoir à tous,
J'utilise le code lisp ci-dessous (pas le mien) pour faire un double décalage, seulement qu'à la fin les nouvelles lignes sont automatiquement déplacées vers le calque 0 et je ne comprends pas pourquoi.
Pouvez-vous m'aider à résoudre ça ?
Merci beaucoup.
Code:
(refun c:k (/ent dist obj krd)
(setq dist (* 0.5 (distance de décalage entre les points de repère: ")))
(alors que (pas de greffe)
(si (eq)
zéro
)
Ce n'était pas une ligne. Veuillez sélectionner à nouveau: ")
)
)
(initget (+ 1 2 4 64))

(setq obj (vlax-ename->vla-objet ent))
(fla offset obj dist)
(fla offset obj (* dist -1))

(vla-erase obj)

(principal)
)
 
se déplaçant sur le calque 0 n'est pas effectué par cette routine, la commande vla-offset utilise le calque de la ligne source.
 
Oui.
Il n'y a pas qu'une seule instruction qui change la couche actuelle ou les nouvelles entités.
et essayé la liste le décalage se produit correctement.

vérifier si vous définissez la commande offset avec l'option courante au lieu de source
 
comme écrit à juste titre rpor66, il n'y a pas de décalage de couche, et sur autocad fonctionne parfaitement, je peux penser que cela dépend du logiciel que vous utilisez, vous pouvez essayer d'utiliser ce code modifié qui force l'attribution du calque aux deux lignes créées, en le prenant de la sélection.
 

Pièces jointes

  • k.lsp
    k.lsp
    1 KB · Affichages: 7
Merci raga pour les réponses. .
vérifier si vous définissez la commande offset avec l'option courante au lieu de source
En fait, la commande fonctionne correctement mais elle change de calque, bo... Je confirme que l'option est dans la source.
comme écrit à juste titre rpor66, il n'y a pas de décalage de couche, et sur autocad fonctionne parfaitement, je peux penser que cela dépend du logiciel que vous utilisez, vous pouvez essayer d'utiliser ce code modifié qui force l'attribution du calque aux deux lignes créées, en le prenant de la sélection.
Merci beaucoup, je finirai par utiliser votre code parce que parfaitement fonctionner.
 
comme écrit à juste titre rpor66, il n'y a pas de décalage de couche, et sur autocad fonctionne parfaitement, je peux penser que cela dépend du logiciel que vous utilisez, vous pouvez essayer d'utiliser ce code modifié qui force l'attribution du calque aux deux lignes créées, en le prenant de la sélection.
scusami joblayer ho ancora due domande sul tuo codice:1: le cycle pendant me permet de faire autant de décalages sans fermer la commande ? Si oui, ça ne marche pas.2: comment stocker la valeur variable Dist Donc vous avez la même valeur quand j'appelle la commande ?

Merci encore.
 
scusami joblayer ho ancora due domande sul tuo codice:1: le cycle pendant me permet de faire autant de décalages sans fermer la commande ? Si oui, ça ne marche pas.2: comment stocker la valeur variable Dist Donc vous avez la même valeur quand j'appelle la commande ?

Merci encore.
le cycle en question, ne vous permet pas de faire autant de décalages, mais vise à continuer à vous demander de sélectionner une ligne, jusqu'à ce que vous ne sélectionnez rien. une solution à ce dont vous avez besoin peut être cette modification, qui répète la commande pendant 100 fois, en étant capable de sélectionner des lignes de répétition, sans changer la variable dist, et en appuyant sur "esc" quand vous voulez terminer, un message d'erreur sera affiché, ce qui n'est pas très propre, mais à ce moment vous avez déjà atteint le but.
 

Pièces jointes

C'est toujours quelque chose de rudimentaire. Je vais l'utiliser pour plus, merci !

Pour la deuxième question, y a-t-il une solution spécifique?
Merci encore.
 
J'essaie de répondre à votre deuxième question, quelqu'un me corrigera si j'écris des absurdités, quand vous lancez une commande lisp les variables dans elle sont actives jusqu'à la fin de la commande, après quoi elles sont perdues, pour suivre votre variable "dist" vous devez la sauvegarder quelque part. autocad utilise ses nombreuses variables système pour ses références et références de ses commandes, tout au long de la session de dessin, mais une commande lisp n'a pas son propre espace en dehors de lui, ou du moins je ne l'ai pas trouvé. Je me souviens avoir lu qu'il y avait 4 variables système disponibles pour l'utilisateur, mais je ne pouvais pas les trouver (si quelqu'un sait quelque chose de plus est bien accepté), donc j'ai exploité la variable utilisée par offset pour récupérer votre variable "dist", mais il pourrait être contrarié si entre deux commandes lisp en question était utilisé offset avec une distance différente. Une autre alternative serait d'enregistrer la variable dans un fichier texte dans un emplacement pc, et de la récupérer dans le besoin, mais vous iriez sale autour, je ne sais pas si cela en vaut la peine.
 

Pièces jointes

les variables en lisp apparaissent à l'ouverture d'un dwg, elles meurent à la fermeture, toujours qui ne changent pas la variable lispinit.
Il y a 5 variables de double type, userr1÷5, et 5 types entiers, useri1÷5, valeurs stockées dans le dwg.
rien n'interdit de mémoriser la valeur de la variable dans un fichier externe, comme myoffset.ini, géré par la routine dans lisp.
 
Bonjour.
utilisateurs1, utilisateurs2, utilisateurs3, utilisateurs4 et utilisateurs5 sont des variables disponibles pour l'utilisateur, sur le web vous trouvez facilement des détails sur l'utilisation.
Vous pouvez les utiliser facilement. J'ai besoin de plus, et je n'en ai pas assez, par exemple pour les paramètres de la façon de lancer un rendu.
J'ai conçu ici un système simple même si rugueux, mais qui n'a pas de contre-indications. dans lisp, du menu, je crée varable de physique "environnement", tout simplement créer des couches qui ne contiennent pas d'objets mais sont des rapports.
exemple... type de ciel "tempête... coucher de soleil... etc"
le quota exact du point d'observation. C'est dur mais ça marche et ça n'a pas de limites.
 
grâce à "rpor66" et "gio_s". Je me suis souvenu de noms similaires, mais je ne les ai pas trouvés, quand je tape "_setvar" sur la ligne de commande pour voir la liste de toutes les variables, ces 5 utilisateurs ne sont pas visibles, mais en tout cas maintenant si je les appelle directement avec son nom, je peux les gérer facilement.
Merci encore.
 

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