Parallele Linien über Script

Bitte benutzen Sie dieses Forum für Fragen, Kommentare und Probleme im Zusammenhang mit QCAD Professional

Moderators: andrew, Husky

Forum rules

Immer Betriebssystem und QCAD Version angeben.

Zeichnungsdateien und Bildschirmfotos beifügen.

Eine Frage pro Topic.

Post Reply
Christian_R
Newbie Member
Posts: 3
Joined: Tue Jul 20, 2021 6:44 am

Parallele Linien über Script

Post by Christian_R » Sun Jul 25, 2021 8:33 pm

Hallo zusammen,

da ich gerade entdeckt habe, dass es hier auch ein deutschsprachiges Forum gibt, möchte ich das Thema https://qcad.org/rsforum/viewtopic.php?f=2&t=8614 hier fortsetzen.

Ich habe mir inzwischen die Vollversion gekauft, da ich guter Hoffnung bin, meine Probleme mit QCAD lösen zu können.Gerade scheitere ich aber an den vermeintlich einfachste Dingen.

Ich habe mal mit den Tutorials "Interaktive Scripte herumgespielt", die Beispiele konnte ich auch alle nachvollziehen, allerdings scheitere ich gerade an dem Versuch einen Kreis zu zeichnen und gleichzeitig ein oder mehrere parallele Kreise hinzuzufügen.

Ich habe versucht die LineParallel.js hinzuzufügen und dann über offset einen Wert zu übergeben. Die parallele Linie würde ich gerne auf einen zweiten Layer legen und beide Linien als Block "verbinden. Es scheitert aber leider schon an der ersten Baustelle, die parallele Linie automatisch mit hinzuzufügen.

Wäre super wenn mir hier jemand Licht ins Dunkel bringen könnte.

Vielen Dank schon mal.

Ach ja, gibt es denn einen Art Debug-Modus, wo man auch Fehlermeldungen bekommt, wenn Scripte falsch sind?

Code: Select all

include("scripts/EAction.js");
include("scripts/Draw/Line/LineParallel/LineParallel.js")

function ExMinimal(guiAction) {
    EAction.call(this, guiAction);

    this.pos = undefined;
}

ExMinimal.prototype = new EAction();

ExMinimal.prototype.beginEvent = function() {
    EAction.prototype.beginEvent.call(this);

    var di = this.getDocumentInterface();
    di.setClickMode(RAction.PickCoordinate);
};

ExMinimal.prototype.pickCoordinate = function(event, preview) {
    this.pos = event.getModelPosition();

    if (preview) {
        this.updatePreview();
    }
    else {
        this.applyOperation();
    }
};

ExMinimal.prototype.getOperation = function(preview) {
    var doc = this.getDocument();

    var op = new RAddObjectOperation();
    var circle = new RCircle(this.pos, 3);
    op.addObject(shapeToEntity(doc, circle));
	var offset = new Offset(circle, 2);
	op.addObject(shapeToEntity(doc, offset);
    return op;
};

ExMinimal.init = function(basePath) {
    var action = new RGuiAction(qsTr("&Minimal Example"), RMainWindowQt.getMainWindow());
    action.setRequiresDocument(true);
    action.setScriptFile(basePath + "/ExMinimal.js");
    action.setGroupSortOrder(100000);
    action.setSortOrder(0);
    action.setWidgetNames(["ExamplesMenu"]);
};

CVH
Premier Member
Posts: 3416
Joined: Wed Sep 27, 2017 4:17 pm

Re: Parallele Linien über Script

Post by CVH » Mon Jul 26, 2021 4:09 am

Code: Select all

// Missing closing closing bracket:
op.addObject(shapeToEntity(doc, offset);
>>> op.addObject(shapeToEntity(doc, offset));

// Not a correct construction:
var offset = new Offset(circle, 2);
>>> var offsets = circle.getOffsetShapes(...)

// On dedicated layer:
var circle = new RCircle(this.pos, 3);
op.addObject(shapeToEntity(doc, circle));
>>>
var layerName = .... (An existing layer)
var circleShape = new RCircle(this.pos, 3);
var newEntity = new RCircleEntity(doc, new RCircleData(circleShape));
newEntity.setLayerName(layerName);
op.addObject(newEntity, true, false); // useCurrentAttributes, NOTforceNew

Starten Sie QCAD mit den Argumenten:
qcad.exe" -rescan -enable-script-debugger -always-load-scripts"

Siehe auch PM in Englisch,
Grüße,
CVH

Post Reply

Return to “QCAD Professional”