क्रमिक रूप से डॉट्स की विकिरणशील पंक्तियों का निर्माण


17

मैं इस तरह एक स्पीकर होल पैटर्न बनाना चाहता हूं: यहां छवि विवरण दर्ज करें

लेकिन मुझे यकीन नहीं है कि कहां से शुरू करना है। क्या इलस्ट्रेटर या इसी तरह के सॉफ़्टवेयर में श्रमसाध्य स्थिति के बिना इसे प्राप्त किया जा सकता है?


यह सही तरह से तैनात / आकार के डॉट्स के साथ एक SVG बनाने के लिए अजगर की तरह कुछ का उपयोग करने के लिए तुच्छ होगा, फिर इलस्ट्रेटर में SVG खोलें, .ai के रूप में फिर से सहेजें, और वहां से जाएं।
जूल

तुच्छता सही है। कार्टेशियन ट्रांसफॉर्म के लिए एक ध्रुवीय लिखें, फिर नेस्टेड लूप, एक स्टेपिंग त्रिज्या और दूसरा स्टेपिंग कोण। आपके उदाहरण में कोणीय कदम 9 डिग्री या पीआई / 10 है।
पीटर जूल

जवाबों:


9

मैं अपनी विधि जोड़ूंगा, क्योंकि यह मुझे लगता है कि यह सबसे सरल है। मूल रूप से, आप:

  1. कम्प्यूटेशनल रूप से अजगर में हलकों को उत्पन्न करते हैं
  2. उन्हें एक साधारण एसवीजी फ़ाइल के रूप में प्रस्तुत करें
  3. Illustrator में फ़ाइल खोलें

यहाँ पायथन लिपि (आवश्यकता svgwriteऔर math) है:

"""
This script has two purposes:

- Simple demonstration of using Python (specifically the svgwrite library) to create an SVG file
- Answer the question http://graphicdesign.stackexchange.com/q/56200/21332
"""

# n[x] should give the number of circles at a distance of (x+1)*d from the center
d = 30
n = [8, 16, 20, 20, 20]

r = 7  # radius of each circle

# Calculate the center points of each circle
circles = [(0, 0)]  # There is always one circle in the middle

import math
for i in range(0, len(n)):
    m = n[i]  # m is the number of circle in this "row", i is the number of the row
    for j in range(0, m):  # for each circle...
        phi = 2*math.pi*j/m  # Calculate the angle at which the circle will be

        # Convert polar coordinates to cartesian
        x = d*(i+1)*math.cos(phi)
        y = d*(i+1)*math.sin(phi)

        circles.append((x, y))

# Write circles to SVG
import svgwrite

# Determine correct size of drawing
width = max([c[0] for c in circles])*2.2
height = max([c[1] for c in circles])*2.2

dwg = svgwrite.Drawing('demo.svg', size = (width, height))  # output will be in the same folder as this script

# offsets for shifting all circles so that the SVG can be easily viewed in browser
x_offset = min([c[0] for c in circles])*1.1
y_offset = min([c[1] for c in circles])*1.1

for c in circles:
    adjusted_x = c[0] - x_offset
    adjusted_y = c[1] - y_offset

    dwg.add(svgwrite.shapes.Circle((adjusted_x, adjusted_y), r))

# Save the file
dwg.save()

# Print SVG source to console
print(dwg.tostring())

यह उस निर्देशिका में एक SVG फ़ाइल बनाएगा, जिसे आप एक ब्राउज़र में खोल सकते हैं:

यहां छवि विवरण दर्ज करें

या इलस्ट्रेटर में:

यहां छवि विवरण दर्ज करें

तुम मुझे से एक बड़ा Illustrator खिड़की का उपयोग करना चाहिए, हालांकि, मेरा थोड़ा आराम से काम करने के लिए बहुत छोटा था ...

यदि आपके पास पाइथन स्क्रिप्ट नहीं हो सकती हैं तो फाइलें बनाएं (हो सकता है कि यह ऑनलाइन पायथन इंटरप्रेटर में चल रही हो) तो बस टिप्पणी करें dwg.save()। अंतिम पंक्ति एसवीजी की सामग्री को सांत्वना के लिए प्रिंट करती है, आप इसे नोटपैड में पेस्ट कर सकते हैं, फिर के रूप में सहेज सकते हैं my file.svg

मैं चला गया और कुछ "साफ" सुविधाओं को जोड़ा, जैसे:

  • सुनिश्चित करें कि मंडलियां ठीक से केंद्रित हैं, ताकि आपके ब्राउज़र में देखने पर नकारात्मक निर्देशांक वाले मंडल क्लिप न हों।
  • SVG कैनवास का आकार बदलें।

आप आसानी से इन्हें छोड़ सकते हैं, क्योंकि इलस्ट्रेटर कैनवास की सीमा के बाहर की वस्तुओं को छिपा नहीं पाता है और आपको मैन्युअल रूप से कैनवास का आकार बदलने की अनुमति देता है:

यहां छवि विवरण दर्ज करें


16

आप वास्तव में निर्दिष्ट नहीं करते हैं कि क्या छवि ऐसी चीज़ है जिसे आपने अपने आप को टीके में उत्पन्न किया है, हाथ में है या नहीं। यदि आपके पास पहले से ही यह कोड है तो आप टीके एप्लीकेशन कैनवास को ईपीएस के रूप में निर्यात कर सकते हैं और इसे इलस्ट्रेटर में खोल सकते हैं। आपको बस कॉल करने की आवश्यकता है canvas.postscript()

यदि आप TK का उपयोग करना चाहते हैं

अजगर 2 में सरल नमूना:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from Tkinter import *
import math

def circle(c, x, y, r=10):
    return c.create_oval(x-r, y-r, x+r, y+r, width=0, fill="black")

def draw_circles(c, num, r):
    step = (2.0*math.pi)/float(num)
    for i in range(num):
        x = 400 + r * math.sin(i*step)
        y = 400 + r * math.cos(i*step)
        circle(c, x, y)


main_window = Tk()
main_window.title('Pattern to EPS')
canvas = Canvas(main_window,
                    width=800, height=800, 
                    bg = 'white')

circle(canvas, 400, 400)
for i in range(1, 6):
    draw_circles(canvas, i*8, i*60)

canvas.pack()

# next line generates a eps file
canvas.postscript(file = "pattern.eps",  width=800, height=800 )

# uncomment next line if you want to see the tk window
# main_window.mainloop()

इसके परिणामस्वरूप एक फ़ाइल का नाम है "patten.eps"

पैटर्न का परिणाम

चित्र 1 : इलस्ट्रेटर में उत्पन्न ईपीएस को खोलना।

आप इसे एक्सटेंशनस्क्रिप्ट, एसवीजी या सीधे ईपीएस प्रोग्राम में लिख सकते हैं, जिसमें से सभी को करना आसान है (कुछ उदाहरणों के लिए नीचे परिशिष्ट देखें)। संसाधनों के लिए निम्न पोस्ट देखें:

पुनश्च : मैं नहीं जानता कि क्या इसके लायक स्क्रिप्टिंग के रूप में इसे बारी बारी से उपकरण और Ctrl+ की मदद से उन्हें खींचने में लगभग 3 मिनट लगते हैंD

इलस्ट्रेटर में पैरामीट्रिक मिश्रण

  1. एक चक्र बनाएं।
  2. इसकी नकल करो।
  3. मंडलियों को मिलाएं
  4. एक और सर्कल बनाएं जो रीढ़ का प्रतिनिधित्व करता है, इसे एक बिंदु में काट लें
  5. मिश्रण और सर्कल दोनों का चयन करें और ऑब्जेक्ट करें → ब्लेंड → स्पाइन बदलें
  6. ऑब्जेक्ट → ब्लेंड → ब्लेंड विकल्प ... माइनस वन ऑब्जेक्ट के साथ गोले की संख्या को समायोजित करें ।
  7. स्पैन सर्कल के आकार और विकल्पों को कॉपी और समायोजित करें। किया हुआ

एक अंगूठी

चित्र 2 : ऊपर की विधि वाला एक छल्ला


परिशिष्ट 1: मैन्युअल रूप से लिखित ईपीएस के साथ

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 800 800
%%Title: pattern
%%Creator: joojaa
%%CreationDate:  2015-07-08
%%EndComments

/c {newpath 10 0 360 arc closepath fill} def
/cr {
    dup 8 mul 2 dict begin /i exch def /r exch 60 mul def 
    1 1 i {360 i div mul dup sin exch cos r mul exch r mul c} for 
    end
} def

400 400 translate
0 0 c
1 1 6 {cr} for
%%EOF

परिशिष्ट 2: एक्सटेंडस्क्रिप्ट उदाहरण

#target illustrator

var doc = app.activeDocument; 

function circle(x,y) {
    doc.pathItems.ellipse(x+5,y-5,10,10);
}

function draw_circles(num, r){
    var step = (2.0*Math.PI)/num;
    for (var i = 0; i < num; i++) {
        var x = -200 + r * Math.sin(i*step);
        var y = 200 + r * Math.cos(i*step);
        circle(x, y);
    }
}

circle(-200,200);
for (var i = 1; i <= 6; i++) {
    draw_circles(i*8, i*30);
}

धन्यवाद - मेरे पास tk विंडो नहीं है, यह केवल उस पैटर्न का एक उदाहरण था जो मुझे मिला
टॉम

1
@Tom Thats क्यों मैं विकल्प सूचीबद्ध।
पूजा

1
हह वह कमाल है, मैंने कहीं पढ़ा कि पोस्टस्क्रिप्ट ट्यूरिंग पूरी है लेकिन मैंने इससे पहले कभी किसी को वास्तव में कोड नहीं देखा।
पीटर जूल

9

यदि आप डॉट्स अस्तर के बारे में परवाह नहीं करते हैं ...

आप ड्रॉस्टर स्ट्रोक का उपयोग करके इलस्ट्रेटर में अपने उदाहरण के समान जल्दी से कुछ बना सकते हैं। समान रूप से गोलाकार छल्ले को आसानी से खींचने के लिए, मैं पोलर ग्रिड टूल का उपयोग करूंगा ।

ध्रुवीय ग्रिड उपकरण विकल्प ध्रुवीय ग्रिड उपकरण परिणाम

तो फिर यह केवल अपनी पसंद के अनुसार अंतराल के साथ धराशायी करने के लिए रिंगों पर स्ट्रोक स्थापित करने की बात है:

स्ट्रोक पैनल विकल्प डॉट्स की पंक्तियों को विकीर्ण करना

आप निश्चित रूप से यदि आवश्यक हो तो अधिक डॉट्स जोड़ने के लिए प्रत्येक पंक्ति को ठीक से ट्यून कर सकते हैं, बस व्यक्तिगत अंतर मान बढ़ा या घटा सकते हैं। गैप बॉक्स सक्रिय होने के साथ, आप मूल्य को जल्दी बदलने के लिए अपने स्क्रॉल व्हील का उपयोग कर सकते हैं। Ctrl / Cmdमहीन वेतन वृद्धि में समायोजित करने के लिए स्क्रॉल करते हुए पकड़ें

स्ट्रोक पैनल विकल्प डॉट्स की पंक्तियों को विकीर्ण करना

इस विधि के साथ एक समस्या यह है कि कुछ डॉट्स में कुछ ओवरलैप हो सकते हैं:

डॉट ओवरलैप

यदि आप उन्हें सही होने की आवश्यकता है, तो उन्हें मैन्युअल रूप से संपादित करने की आवश्यकता हो सकती है। प्रति पंक्ति में अधिकतम 1 ओवरलैप होना चाहिए।


1
अच्छा एक, मिश्रण कठिन संरेखित करने के लिए बेहतर है
joojaa

1
यह एक स्पीकर ग्रिल है, या तो वह इसे कुछ एल्यूमीनियम पर सिल्क स्क्रीन पर जा रहा है और मैन्युअल रूप से प्रत्येक निशान के माध्यम से ड्रिल करता है जिस स्थिति में थोड़ा चौड़ा निशान मायने नहीं रखेगा या वह डीएक्सएफ में बदलने और सीएनसी मिल का उपयोग करने जा रहा है, जिस स्थिति में थोड़ा सा व्यापक छेद कोई फर्क नहीं पड़ता।
पीटर जूल

9

यदि आप डॉट्स लाइनिंग के बारे में परवाह करते हैं ...

इस तरह के दोहराए जाने वाले पैटर्न के लिए इलस्ट्रेटर का विकृत और परिवर्तन प्रभाव एकदम सही है, लेकिन उस सटीक पैटर्न को प्राप्त करने के लिए इसमें कुछ ट्विकिंग की आवश्यकता होगी। बिंदीदार रेखा से शुरू करें (अपने उदाहरण के लिए 11 बिंदुओं के साथ)

स्ट्रोक विकल्प फलक बिंदुयुक्त रेखा

के माध्यम से एक रूपांतरण प्रभाव जोड़ें Effect > Distort & Transform > Transform...

रूपांतरण प्रभाव विकल्प डॉट्स की पंक्तियों को विकीर्ण करना

आप देखेंगे कि आंतरिक पंक्तियों में बहुत सारे डॉट्स हैं। यहीं से मैनुअल ट्विकिंग आती है, लेकिन आपको बाकी लोगों का पता लगाने के लिए काफी दूर जाना चाहिए।


8

Inkscape का उपयोग करें:

  1. सह-केंद्रित गाइड लाइनें बनाएं और समान राशि से घुमाए जाने के लिए लाइनों पर डबल क्लिक करें (मैंने 30 डिग्री का उपयोग किया)।
  2. मैन्युअल रूप से चौड़ाई और ऊंचाई सेट करने, और उन्हें केंद्र में ले जाने के लिए सह-केंद्रित अनफ़िल्ड सर्कल की एक श्रृंखला बनाएं।
  3. एक भरा हुआ सर्कल बनाएं, और कई बार कॉपी पेस्ट करें।
  4. "पंक्तियों और स्तंभों" टूल का उपयोग करके उन्हें एक पंक्ति के साथ समान फैलाकर रखें
  5. मंडलियों को समूहित करें, और फिर उन्हें घुमाएँ। अंत में उन्हें रखें ताकि गाइड चौराहे के साथ केंद्र की रेखा ऊपर हो।
  6. फिर से कॉपी और पेस्ट करें।

यहां छवि विवरण दर्ज करें

और परिणाम (ओपी की छवि से मेल खाने के लिए 22.5 डिग्री का उपयोग करते हुए):

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.