Aktives Mitglied
Gelöschtes Mitglied 633957
Guest
Ich nehme das was @virra sagt!Ist es möglich in PS ein Hilfslinienraster auf eine Ebene zu rastern?
Aktives Mitglied
Gelöschtes Mitglied 633957
Guest
Hat auch so bestimmt schon seine 2 - 3 Stunden gebraucht. Und wie @ph_o_e_n_ix immer so schön sagt: Niemand dankt es dir.Mehr Zeit werde ich aber nicht in das Skript investieren ...
... sofern niemanden ein gravierender Fehler auffällt.
var ihon = dcHeight / pxVask;
var ivon = dcWidth / pxHask;
for (i = 0; i <= ihon; i++) {
var wkMess = pxVask * i;
var startPoint = [0, wkMess];
var endPoint = [dcWidth, wkMess];
var lineWidth = pxWidth;
drawLine( startPoint, endPoint, lineWidth );
}
for (i = 0; i <= ivon; i++) {
var wkMess = pxHask * i;
var startPoint = [wkMess, 0];
var endPoint = [wkMess, dcHeight];
var lineWidth = pxWidth;
drawLine( startPoint, endPoint, lineWidth );
}
var ihon = (dcHeight-1) / pxVask;
var ivon = (dcWidth-1) / pxHask;
for (i = 0; i <= ihon; i++) {
var wkMess = pxVask * i;
var startPoint = [0, wkMess+0.5];
var endPoint = [dcWidth, wkMess+0.5];
var lineWidth = pxWidth;
drawLine( startPoint, endPoint, lineWidth );
}
for (i = 0; i <= ivon; i++) {
var wkMess = pxHask * i;
var startPoint = [wkMess+0.5, 0];
var endPoint = [wkMess+0.5, dcHeight];
var lineWidth = pxWidth;
drawLine( startPoint, endPoint, lineWidth );
}
Gelöschtes Mitglied 633957
Guest
Du hast vollkommen Recht, die Linien orientieren sich am Pixel Mittelpunkt, was bei einer ungeraden Linienbreite zu einem unsauberen Ergebnis führt. Vielen Dank für den Hinweis!Einen gravierenden Fehler gibt es schon.
Deine 1 Pixel Linien liegen immer auf 2 Pixeln.
Das stimmt! Es war halt ein witziges, kleines Projekt für den Abend. Den Anspruch an ein perfektes Skript hatte ich nun nicht gerade, doch einigermaßen anständig soll es dann schon sein. Daher nochmals ein...Hat auch so bestimmt schon seine 2 - 3 Stunden gebraucht.
Da habe ich mich allerdings dagegen entschieden, bitte nicht übel nehmen, da wenn die jeweils letzte Linie auf den letzten Pixel des Dokuments treffen würde, mit einer positiven Verschiebung, versucht werden würde außerhalb des Dokuments zu zeichnen und das Skript dann abbrechen würde. Außerdem würde bei einer geraden Linienbreite (z.B: 2 Pixel), dass gleiche Problem auftreten, wie es bei der ungeraden Stärke der Fall war.Tausche den Bereich mit deinen Schleifen
if(wkMess != dcWidth) {
if(pxWask % 2 != 0) {
wkMess = wkMess + 0.5;
}
} else {
if(pxWask % 2 != 0) {
wkMess = wkMess - 0.5;
}
}
Gelöschtes Mitglied 633957
Guest
Eine Frage: "Ist es möglich in PS ein Hilfslinienraster auf eine Ebene zu rastern? Also das die Hilfslinien sozusagen zu Pixel (Stärke 1px) werden?"
Gelöschtes Mitglied 633957
Guest
Nicht wenn Linienstärke größer 1px. Dann wird Links und Oben etwas von der Stärke weggenommen um auch die äußeren Rasterabstände identisch zu halten.Bei der alten ist mir eine Kleinigkeit aufgefallen: das Raster beginnt oben und links mit einer halben oder bei ungeraden Breiten mit etwas mehr als einer halben "Hilfslinie". Sollte eigentlich mit der vollen Breite beginnen. Oder nicht?
Wenn z.B. das Dokument eine Größe von 2000x2000 px hat und man mit einer Linienstärke von 2px, einen Abstand von 100x100 eingibt, oder etwas entsprechendes, würden in diesem Fall die äußeren Linien (o., u., li., re.) 1px betragen und der Rest der Linien, die eingegebenen 2px. Das dient dazu, wie oben beschrieben, alle Rasterinnenabstände identisch zu halten.Und die letzten Rasterzellen rechts und unten ist bei manchen Einstellungen ein Pixel kleiner als alle anderen.
Gelöschtes Mitglied 633957
Guest
ein Dokument mit den 221 mal 200 Pixeln bringt das Skript bei Standardeinstellungen zum Absturz
Gelöschtes Mitglied 633957
Guest
Da sollte eigentlich nur ein 2px Rahmen gezeichnet werden, da 2*3 > 5 ist.Bild 200 mal 200 Pixel
breite 3 Pixel
raster 5 Pixel
Das kann ich leider nicht nachstellen, ich habe da einen sauberen 3px Rand mit 5px Strichen innen.bei 5 Pixel breite und raster 10 das gleiche
Gelöschtes Mitglied 633957
Guest
Alles klar, schaue ich mir am Sonntag an. Für heute geht der Rechner erst einmal schlafen.Scheint nur bei bestimmten Werten und dann immer nur rechts und unten aufzutreten. In der Mitte ist bisher immer alles ok.
Gelöschtes Mitglied 633957
Guest
Weil das Script versuchen sollte mitzudenken... Bei 5px Strichstärke alle 10px bleibt kein Innenabstand für das Raster. Daher wird es erweitert. Grundsätzlich fand ich das eine gute Idee, doch die Umsetzung ist eher suboptimal.wieso hat das Raster bei einer Rasterweite von 10 innen 15 Pixel ???
unverblümt
#als .jsx abspeichern
#target Photoshop
app.bringToFront();
function main(){
if(!documents.length) return;
var win = new Window( 'dialog', 'Draw Lines' );
g = win.graphics;
var myBrush = g.newBrush(g.BrushType.SOLID_COLOR, [0.99, 0.99, 0.99, 1]);
g.backgroundColor = myBrush;
win.orientation='row';
win.p1= win.add("panel", undefined, undefined, {borderStyle:"black"});
win.g1 = win.p1.add('group');
win.g1.orientation = "row";
win.title = win.g1.add('statictext',undefined,'Draw Lines');
win.title.alignment="fill";
var g = win.title.graphics;
g.font = ScriptUI.newFont("Georgia","BOLDITALIC",22);
win.g5 =win.p1.add('group');
win.g5.orientation = "row";
win.g5.alignment='fill';
win.g5.spacing=10;
win.g5.st1 = win.g5.add('statictext',undefined,'Number of lines Vertical');
win.g5.st1.preferredSize=[150,20];
win.g5.et1 = win.g5.add('edittext',undefined,'0');
win.g5.et1.preferredSize=[50,20];
win.g5.et1.onChanging = function() {
if (this.text.match(/[^\-\.\d]/)) {
this.text = this.text.replace(/[^\-\.\d]/g, '');
}
};
win.g10 =win.p1.add('group');
win.g10.orientation = "row";
win.g10.alignment='fill';
win.g10.st1 = win.g10.add('statictext',undefined,'Number of lines Horizontal');
win.g10.st1.preferredSize=[150,20];
win.g10.et1 = win.g10.add('edittext',undefined,'0');
win.g10.et1.preferredSize=[50,20];
win.g10.et1.onChanging = function() {
if (this.text.match(/[^\-\.\d]/)) {
this.text = this.text.replace(/[^\-\.\d]/g, '');
}
};
win.g15 =win.p1.add('group');
win.g15.orientation = "row";
win.g15.alignment='fill';
win.g10.st1 = win.g15.add('statictext',undefined,'Line Width');
win.g10.dd1 = win.g15.add('dropdownlist');
for(var t =1;t<21;t++){
win.g10.dd1.add('item',t);
}
win.g10.dd1.selection=0;
win.g100 =win.p1.add('group');
win.g100.orientation = "row";
win.g100.alignment='fill';
win.g100.bu1 = win.g100.add('button',undefined,'Add Lines');
win.g100.bu1.preferredSize=[110,25];
win.g100.bu2 = win.g100.add('button',undefined,'Cancel');
win.g100.bu2.preferredSize=[110,25];
win.g100.bu1.onClick=function(){
win.close(0);
var horz = Number(win.g10.et1.text);
var vert = Number(win.g5.et1.text);
var lineWidth = win.g10.dd1.selection.index + 1;
var crossHatch = activeDocument.artLayers.add();
crossHatch.name = "Draw Lines";
var spaceH = activeDocument.height.as('px')/(horz+1);
var spaceV = activeDocument.width.as('px')/(vert+1);
var spcH = spaceH;
var spcV = spaceV;
for(var a =0;a<horz;a++){
lineHorzVert(spcH,'H',lineWidth);
spcH +=spaceH;
}
for(var v =0;v<vert;v++){
lineHorzVert(spcV,'V',lineWidth);
spcV +=spaceV;
}
function lineHorzVert(space,HV,strokeWidth) {
if(HV.toLowerCase() == 'h'){
HV = 'Sngr'; LT = 'Top ';
}else{
HV = 'Sngc'; LT = 'Left';
}
var Black = new SolidColor();
Black.rgb.hexValue = '000000';
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putProperty( charIDToTypeID('Chnl'), charIDToTypeID('fsel') );
desc.putReference( charIDToTypeID('null'), ref );
var desc2 = new ActionDescriptor();
desc2.putUnitDouble( charIDToTypeID(LT), charIDToTypeID('#Pxl'), space );
desc.putObject( charIDToTypeID('T '), charIDToTypeID(HV), desc2 );
try{
executeAction( charIDToTypeID('setd'), desc, DialogModes.NO );
activeDocument.selection.stroke (Black, strokeWidth, StrokeLocation.CENTER, ColorBlendMode.NORMAL, 100, false);
activeDocument.selection.deselect();
}catch(e){}
}
}
win.center();
win.show();
}
main();
Willkommen auf PSD-Tutorials.de
In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.
Nächster neuer Gratisinhalt
Statistik des Forums