NURBS curve

Hi,
I have to draw a NURBS curve in Java, but there's few material in the Internet about it (for C++ there's a lot).
I have already all the parameters needed: degree of the curve, knots, control points, fit points, weights.
I'm not asking for the source code already done, but for some good material source.
Thanks!

import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.text.NumberFormat;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class NURBS
    NURBSPanel nurbsPanel;
    JFrame f;
    JPanel south;
    public NURBS()
        south = new JPanel(new GridLayout(0,1));
        f = new JFrame();
        f.setJMenuBar(getMenuBar());
        f.add(south, "South");
        setGUI("circle 1");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(500,650);
        f.setLocation(500,50);
        f.setVisible(true);
    private void setGUI(String id)
        south.removeAll();
        if(nurbsPanel != null)
            f.remove(nurbsPanel);
        nurbsPanel = new NURBSPanel(id);
        PointManager pointManager = new PointManager(nurbsPanel);
        nurbsPanel.addMouseListener(pointManager);
        nurbsPanel.addMouseMotionListener(pointManager);
        KnotDisplay knotDisplay = new KnotDisplay(nurbsPanel);
        WeightsPanel weightsPanel = new WeightsPanel(nurbsPanel);
        south.add(knotDisplay);
        south.add(weightsPanel);
        south.revalidate();
        f.add(nurbsPanel);
        f.validate();
        nurbsPanel.firstTime = true;
    private JMenuBar getMenuBar()
        JMenu menu = new JMenu("demo");
        ActionListener l = new ActionListener()
            public void actionPerformed(ActionEvent e)
                JMenuItem item = (JMenuItem)e.getSource();
                String ac = item.getActionCommand();
                setGUI(ac);
        String[] s = { "weight test", "circle 1", "circle 2" };
        for(int j = 0; j < s.length; j++)
            JMenuItem item = new JMenuItem(s[j]);
            item.setActionCommand(s[j]);
            item.addActionListener(l);
            menu.add(item);
        JMenuBar menuBar = new JMenuBar();
        menuBar.add(menu);
        return menuBar;
    public static void main(String[] args)
        new NURBS();
class NURBSPanel extends JPanel
    double[][] points;
    double[] knots;
    GeneralPath curve;
    int n,                  // points.length - 1    set in makeCurve
        m,                  // knots.length - 1
        p;                  // degree = m - n - 1
    NumberFormat nf;
    boolean firstTime;
    final int
        PAD    = 30,
        TICK   = 3,
        MARGIN = 2,
        X_MAX  = 8,
        Y_MAX  = 8;
    public NURBSPanel(String dataSet)
        if(dataSet.equals("weight test"))
            setWeightTest();
        else if(dataSet.equals("circle 1"))
            setCircleOne();
        else
            setCircleTwo();
        curve = new GeneralPath();
        nf = NumberFormat.getInstance();
        nf.setMaximumFractionDigits(1);
        addComponentListener(new ComponentAdapter()
            public void componentResized(ComponentEvent e)
                if(!firstTime)
                    firstTime = true;
                    repaint();
    protected void paintComponent(Graphics g)
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        drawAxes(g2);
        drawConvexPolyline(g2);
        if(firstTime)
            makeCurve();
        g2.setPaint(Color.green.darker());
        g2.draw(curve);
        drawKnots(g2);
        drawPoints(g2);
    private void makeCurve()
        curve.reset();
        final double STEPS = 20.0;
        boolean firstValue = true;
        n = points.length - 1;
        m = knots.length - 1;
        p = m - n - 1;
        // curve domain is [u[p], u[m-p]]
        // so curve is defined on non-zero intervals from u[p] up to u[m-p]
        for(int j = p; j < m-p; j++)
            double spanInterval = knots[j+1] - knots[j];
            if(spanInterval == 0)       // no interval -> no curve
                continue;
            double dt = spanInterval / STEPS;
            double u;
            for(int k = 0; k <= STEPS; k++)
                u = knots[j] + k * dt;
                //System.out.println("u = " + nf.format(u));
                Point2D.Double pv = getValue(u, j);
                if(firstValue)
                    curve.moveTo((float)pv.x, (float)pv.y);
                    firstValue = false;
                else
                    curve.lineTo((float)pv.x, (float)pv.y);
        firstTime = false;
    private double[] getBasisValues(double u, int k, int p)
        double[] N = new double[points.length];
        for(int j = 0; j < N.length; j++)
            N[j] = 0.0;
        // u is in interval [u[k], u[k+1]]
        // start with 0-degree coefficient, guaranteed to be non-zero
        N[k] = 1.0;
        // and triangulate toward coefficients of degree p
        for(int d = 1; d <= p; d++)
            N[k-d] = ((knots[k+1] - u) / (knots[k+1] - knots[k-d+1])) * N[k-d+1];
            for(int i = k-d+1; i <= k-1; i++)
                N[i] = ((u - knots) / (knots[i+d] - knots[i])) * N[i] +
((knots[i+d+1] - u) / (knots[i+d+1] - knots[i+1])) * N[i+1];
N[k] = ((u - knots[k]) / (knots[k+d] - knots[k])) * N[k];
return N;
private Point2D.Double getValue(double u, int k)
double[] N = getBasisValues(u, k, p);
// the curve over knot interval [u[k], u[k+1]] has at most p+1
// non-zero coefficients: N[k-p][p], N[k-p+1][p], ... N[k][p]
double x = 0.0, y = 0.0, w = 0.0;
for(int j = k-p; j <= k; j++)
if(j < 0)
continue;
x += N[j] * points[j][0] * points[j][2];
y += N[j] * points[j][1] * points[j][2];
w += N[j] * points[j][2];
return modelToView(x/w, y/w);
public void setWeightTest()
points = new double[][] {
{ 1.5, 0.25, 1.0 }, { 3.5, 1.25, 1.0 }, { 0.75, 1.75, 1.0 },
{ 0.75, 5.0, 1.0 }, { 7.5, 7.5, 2.0 }, { 7.7, 1.0, 1.0 },
{ 4.3, 2.2, 1.0 }, { 5.1, 0.75, 1.0 }, { 7.5, 0.5, 1.0 }
knots = new double[] {
// u_0 u_1 u_2 u_3 u_4 u_5 u_6 u_7 u_8
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1/3.0, 2/3.0,
// u_9 u_10 u_11 u_12 u_13 u_14 u_15
1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
public void setCircleOne() // circle in triangle
points = new double[][] {
{ 4.0, 1.0, 1.0 }, { 0.5, 1.0, 0.5 }, { 2.25, 4.03, 1.0 },
{ 4.0, 7.06, 0.5 }, { 5.75, 4.03, 1.0 }, { 7.5, 1.0, 0.5 },
{ 4.0, 1.0, 1.0 }
knots = new double[] {
// u_0 u_1 u_2 u_3 u_4 u_5 u_6 u_7 u_8 u_9
0.0, 0.0, 0.0, 1/3.0, 1/3.0, 2/3.0, 2/3.0, 1.0, 1.0, 1.0
public void setCircleTwo() // circle in square
double w = Math.pow(2, 0.5)/2;
points = new double[][] {
{ 4.0, 1.0, 1.0 }, { 1.0, 1.0, w }, { 1.0, 4.0, 1.0 },
{ 1.0, 7.0, w }, { 4.0, 7.0, 1.0 }, { 7.0, 7.0, w },
{ 7.0, 4.0, 1.0 }, { 7.0, 1.0, w }, { 4.0, 1.0, 1.0 }
knots = new double[] {
// u_0 u_1 u_2 u_3 u_4 u_5 u_6 u_7 u_8 u_9 u_10 u_11
0.0, 0.0, 0.0, 1/4.0, 1/4.0, 1/2.0, 1/2.0, 3/4.0, 3/4.0, 1.0, 1.0, 1.0
private void drawConvexPolyline(Graphics2D g2)
g2.setPaint(new Color(240,180,180));
double lastX = 0, lastY = 0;
Point2D.Double pv;
for(int j = 0; j < points.length; j++)
pv = modelToView(points[j][0], points[j][1]);
if(j > 0)
g2.draw(new Line2D.Double(pv.x, pv.y, lastX, lastY));
lastX = pv.x;
lastY = pv.y;
private void drawKnots(Graphics2D g2)
g2.setPaint(Color.blue);
// show knots only if there are curve segments, ie, only if p > m-p
if(p > m-p)
return;
// curve domain is [u[p], u[m-p]]
// send all knots within the domain, ie, including endpoints
// with care to adjust knot interval for last knot to the previous
// interval, viz, m-p-1 to avoid ArrayIndexOutOfBoundsException
// in N[k] in getBasisValues method, ie, ensure N[k <= n]
// in other words, this loop counts valid curve segments plus
// one for the last knot on the last curve segment
for(int j = p, k = p; j <= m-p; j++, k++)
if(j < m-p && knots[j+1] - knots[j] == 0)
continue;
if(j == m-p)
k = m-p-1;
Point2D.Double pv = getValue(knots[j], k);
GeneralPath path = new GeneralPath();
path.moveTo((float)pv.x-4, (float)pv.y);
path.lineTo((float)pv.x, (float)pv.y-4);
path.lineTo((float)pv.x+4, (float)pv.y);
path.lineTo((float)pv.x, (float)pv.y+4);
g2.fill(path);
private void drawPoints(Graphics2D g2)
g2.setPaint(Color.red);
for(int j = 0; j < points.length; j++)
Point2D.Double pv = modelToView(points[j][0], points[j][1]);
g2.fill(new Ellipse2D.Double(pv.x - 2, pv.y - 2, 4, 4));
public Point2D.Double modelToView(double x, double y)
double h = getHeight();
Point2D.Double pView = new Point2D.Double();
pView.x = PAD + x * (getWidth() - 2*PAD) / X_MAX;
pView.y = h - PAD - (y * (h - 2*PAD) / Y_MAX);
return pView;
private Point2D.Double viewToModel(double x, double y)
double w = getWidth();
double h = getHeight();
Point2D.Double pModel = new Point2D.Double();
pModel.x = (x - PAD) * X_MAX / (w - 2*PAD);
pModel.y = (h - PAD - y) * Y_MAX / (h - 2*PAD);
return pModel;
private void drawAxes(Graphics2D g2)
Font font = new Font("lucida sans", Font.PLAIN, 14);
g2.setFont(font);
FontRenderContext frc = g2.getFontRenderContext();
double w = getWidth();
double h = getHeight();
double xInc = (w - 2*PAD) / X_MAX;
double yInc = (h - 2*PAD) / Y_MAX;
double x1 = PAD, y1 = PAD, x2 = w-PAD, y2 = h-PAD;
g2.setPaint(new Color(200,220,220));
// grid lines - vertical lines across
for(int j = 0; j <= X_MAX; j++)
g2.draw(new Line2D.Double(x1, y1, x1, y2));
x1 += xInc;
// horizontal lines down
x1 = PAD;
for(int j = 0; j < Y_MAX; j++)
g2.draw(new Line2D.Double(x1, y1, x2, y1));
y1 += yInc;
g2.setPaint(Color.black);
// ordinate
g2.draw(new Line2D.Double(PAD, PAD, PAD, h-PAD));
// tic marks
x1 = PAD - TICK; y1 = PAD; x2 = PAD;
for(int j = 0; j <= Y_MAX; j++)
g2.draw(new Line2D.Double(x1, y1, x2, y1));
y1 += yInc;
// labels
for(int j = 0; j <= Y_MAX; j++)
String s = String.valueOf(Y_MAX - j);
float width = (float)font.getStringBounds(s,frc).getWidth();
float height = font.getLineMetrics(s, frc).getAscent();
float sx = PAD - TICK - MARGIN - width;
float sy = (float)(PAD + j * yInc + height/2);
g2.drawString(s, sx, sy);
// abcissa
g2.draw(new Line2D.Double(PAD, h-PAD, w-PAD, h-PAD));
// tic marks
x1 = PAD; y1 = h-PAD; y2 = h-PAD+TICK;
for(int j = 0; j <= X_MAX; j++)
g2.draw(new Line2D.Double(x1, y1, x1, y2));
x1 += xInc;
// labels
for(int j = 0; j <= X_MAX; j++)
String s = String.valueOf(j);
float width = (float)font.getStringBounds(s,frc).getWidth();
float height = font.getLineMetrics(s, frc).getAscent();
float sx = (float)(PAD + j * xInc - width/2);
float sy = (float)(h - PAD + TICK + MARGIN + height);
g2.drawString(s, sx, sy);
public void setPoint(int index, double x, double y)
Point2D.Double pModel = viewToModel(x, y);
points[index][0] = pModel.x;
points[index][1] = pModel.y;
firstTime = true;
repaint();
public void setKnot(int index, double value)
knots[index] = value;
firstTime = true;
repaint();
public void setWeight(int index, double weight)
points[index][2] = weight;
firstTime = true;
repaint();
class PointManager extends MouseInputAdapter
NURBSPanel nurbsPanel;
double[][] points;
Point2D.Double offset;
int selectedIndex;
boolean dragging;
public PointManager(NURBSPanel np)
nurbsPanel = np;
points = nurbsPanel.points;
offset = new Point2D.Double();
dragging = false;
public void mousePressed(MouseEvent e)
Point p = e.getPoint();
Point2D.Double pView;
for(int j = 0; j < points.length; j++)
pView = nurbsPanel.modelToView(points[j][0], points[j][1]);
if(p.distance(pView) < 5)
selectedIndex = j;
offset.x = p.x - pView.x;
offset.y = p.y - pView.y;
dragging = true;
break;
public void mouseReleased(MouseEvent e)
dragging = false;
public void mouseDragged(MouseEvent e)
if(dragging)
double x = e.getX() - offset.x;
double y = e.getY() - offset.y;
nurbsPanel.setPoint(selectedIndex, x, y);
class KnotDisplay extends JPanel
NURBSPanel nurbsPanel;
JTable table;
JSlider slider;
double scale;
boolean valueIsAdjusting;
int selectedIndex;
public KnotDisplay(NURBSPanel np)
nurbsPanel = np;
valueIsAdjusting = false;
selectedIndex = 4;
setBorder(BorderFactory.createTitledBorder("knots"));
setLayout(new BorderLayout());
add(getTable(), "North");
add(getSlider());
add(getRadioPanel(), "South");
private void moveKnot(double d)
nurbsPanel.setKnot(selectedIndex, d);
table.setValueAt(String.valueOf(d), 0, selectedIndex);
private void changeSelection()
// reset slider values
double lo = nurbsPanel.knots[selectedIndex-1];
double hi = nurbsPanel.knots[selectedIndex+1];
scale = Math.rint((hi - lo) * 1000);
int min = (int)(lo * scale);
int max = (int)(hi * scale);
boolean enabled = true;
if(max - min == 0)
enabled = false;
slider.setEnabled(enabled);
int value = (int)(nurbsPanel.knots[selectedIndex] * scale);
valueIsAdjusting = true;
slider.setMinimum(min);
slider.setMaximum(max);
slider.setValue(value);
valueIsAdjusting = false;
private JTable getTable()
String[] headers = new String[nurbsPanel.knots.length];
Object[][]data = new Object[1][nurbsPanel.knots.length];
for(int col = 0; col < data[0].length; col++)
headers[col] = "";
data[0][col] = String.valueOf(nurbsPanel.knots[col]);
table = new JTable(new DefaultTableModel(data, headers));
TableCellRenderer renderer = table.getDefaultRenderer(String.class);
((JLabel)renderer).setHorizontalAlignment(JLabel.CENTER);
table.setEnabled(false);
return table;
private JSlider getSlider()
double lo = nurbsPanel.knots[selectedIndex-1];
double hi = nurbsPanel.knots[selectedIndex+1];
scale = Math.rint((hi - lo) * 1000);
int min = (int)(lo * scale);
int max = (int)(hi * scale);
int value = (int)(nurbsPanel.knots[selectedIndex] * scale);
slider = new JSlider(JSlider.HORIZONTAL, min, max, value);
if(max - min == 0)
slider.setEnabled(false);
slider.addChangeListener(new ChangeListener()
public void stateChanged(ChangeEvent e)
if(!valueIsAdjusting)
double value = slider.getValue() / scale;
moveKnot(value);
return slider;
private JPanel getRadioPanel()
final JRadioButton[] buttons = new JRadioButton[nurbsPanel.knots.length];
ButtonGroup group = new ButtonGroup();
ActionListener l = new ActionListener()
public void actionPerformed(ActionEvent e)
JRadioButton radio = (JRadioButton)e.getSource();
int index = -1;
for(int j = 0; j < buttons.length; j++)
if(radio == buttons[j])
selectedIndex = j;
break;
changeSelection();
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 1.0;
for(int j = 0; j < nurbsPanel.knots.length; j++)
buttons[j] = new JRadioButton();
group.add(buttons[j]);
buttons[j].addActionListener(l);
panel.add(buttons[j], gbc);
buttons[0].setEnabled(false);
buttons[buttons.length-1].setEnabled(false);
buttons[selectedIndex].setSelected(true);
return panel;
class WeightsPanel extends JPanel
NURBSPanel nurbsPanel;
JTable table;
JSlider slider;
double scale;
boolean valueIsAdjusting;
int selectedIndex;
public WeightsPanel(NURBSPanel np)
nurbsPanel = np;
valueIsAdjusting = false;
selectedIndex = 2;
setBorder(BorderFactory.createTitledBorder("weights"));
setLayout(new BorderLayout());
add(getTable(), "North");
add(getSlider());
add(getRadioPanel(), "South");
private void changeWeight(double d)
nurbsPanel.setWeight(selectedIndex, d);
table.setValueAt(String.valueOf(d), 0, selectedIndex);
private void changeSelection()
// reset slider value
double weight = nurbsPanel.points[selectedIndex][2];
setScale(weight);
int value = (int)(weight * scale);
valueIsAdjusting = true;
slider.setValue(value);
valueIsAdjusting = false;
private void setScale(double weight)
if(weight < 1.0)
scale = slider.getMaximum()/5;
else
scale = 2.0;
private JTable getTable()
String[] headers = new String[nurbsPanel.points.length];
Object[][]data = new Object[1][nurbsPanel.points.length];
for(int col = 0; col < data[0].length; col++)
headers[col] = "";
data[0][col] = String.valueOf(nurbsPanel.points[col][2]);
table = new JTable(new DefaultTableModel(data, headers));
TableCellRenderer renderer = table.getDefaultRenderer(String.class);
((JLabel)renderer).setHorizontalAlignment(JLabel.CENTER);
table.setEnabled(false);
return table;
private JSlider getSlider()
double weight = nurbsPanel.points[selectedIndex][2];
setScale(weight);
int value = (int)(weight * scale);
slider = new JSlider(JSlider.HORIZONTAL, 0, 50, value);
slider.addChangeListener(new ChangeListener()
public void stateChanged(ChangeEvent e)
if(!valueIsAdjusting)
double value = slider.getValue() / scale;
changeWeight(value);
return slider;
private JPanel getRadioPanel()
final JRadioButton[] buttons = new JRadioButton[nurbsPanel.points.length];
ButtonGroup group = new ButtonGroup();
ActionListener l = new ActionListener()
public void actionPerformed(ActionEvent e)
JRadioButton radio = (JRadioButton)e.getSource();
int index = -1;
for(int j = 0; j < buttons.length; j++)
if(radio == buttons[j])
selectedIndex = j;
break;
changeSelection();
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 1.0;
for(int j = 0; j < nurbsPanel.points.length; j++)
buttons[j] = new JRadioButton();
group.add(buttons[j]);
buttons[j].addActionListener(l);
panel.add(buttons[j], gbc);
buttons[selectedIndex].setSelected(true);
return panel;

Similar Messages

  • Can I Create A B-Spline Curve and a NURBS Curve?

    Can I create A B-Spline curve and a NURBS curve in the Adobe Illustrator?
    If yes, how to do it?
    Also, how to create a breakpoint, that will add a new control point, on a curve, in Adobe Illustrator?
    Many thanks

    Mylenium wrote:
    All Splines in AI are Bèziers. There is no way to create other curve types. For the rest simply refer to the help on how to use the path tools.
    Mylenium
    I know that all splines are Bezier's, a.k.a Bezier invented them (please CMIIW).
    For example:
    B-spline = Bezier's spline
    NURBS = Non-Uniform Rational Bezier Surface
    I think all of the curves created by using the pen tool is a linear, quadratic, and cubic Bezier curve.
    I hope you understand what I am talking about.

  • Mini DVI to Video Curving

    Hi,
    I just bought a mini-DVI to video cable and am hooking my macbook up to my tv through a composite video cable. It's not working properly and the picture on the tv curves at the edges, almost like it's projecting an image onto a regular tv that has a curved screen. My tv is a flat-screen CRT, not a curved one, and I can't find any options to change the settings so that it won't try to project a curved image. Anyone know anything on this?

    reamsjp is right. That curving is in your TV. It is even present when you are watching normal TV programs but it can be hard to tell without straight lines in the image to reference. But if you really go looking for it, say by putting a TV guide table up on the screen that has a lot of straight lines in it, you will be able to see the same curvature.
    Hopefully your TV has a submenu for making some adjustments as reamsjp says, but likely you won't be able to improve it much. It's the nature of the beast, flat screen or not.

  • Curve 8520 cannot send/receive calls or SMS when in range of WiFi - since foreign holiday

    Re-posting this in the Curve forum, where it belongs... hoping someone can help.
    Recently the whole family went to Spain for two weeks. All four of our phones (a Google Nexus 4, a BB Curve 9300 and two BBCurve 8520s) worked OK in Spain, connected to local mobile networks, sent and received texts and so on.
    Since returning to the UK, the BlackBerry handsets have all had problems getting re-registered to our home network (giffgaff, which uses the O2 network, as I understand it). The nexus has been fine from the moment we got back, but the BB handsets are not.
    The symptoms: when in range of a registered WiFi connection, the phones cannot send or receive texts (SMS) or make or receive calls, when out of range of WiFi, they do (sometimes) succeed. It is as though the WiFi settings are over-ruling the service books / HRT for the mobile network.
    The 9300 seems to have sorted itself out, thanks (possibly) to an OS upgrade. The 8520s remain basically useless.
    We have tried: battery pulls, SIM pulls, manual network registration, clearing the service books and re-registering, switching SIM cards between the phones (whichever SIM is in the 9300 works OK, whichever SIM is in the 8520 does not work), OS upgrade.
    The network shows on the handset screen, and connection is shown as EDGE. But calls do not get connected and SMS messages fail with "too many retries". Attempts to re-register the handset result in a message being received that the handset has been registered but it makes no difference.
    The network provider (giffgaff) say they have done everything they can, and I should speak to "an engineer" - but it seems very unlikely to me that all three phones suffered a hardware fault while flying home from Spain, and that the 9300 somehow fixed itself. So I'm convinced it is a registration issue, but giffgaff are not exactly confident in their support for BB.
    So - has anyone ever seen this behaviour before, and how can we fix it?
    Thanks

    Good day
    I took a into the BlackBerry knowledge data base here is some info you can follow
    I cannot make or receive calls
    I cannot send SMS text messages
    Want to contract me? You can follow me on Twitter @RobGambino
    Be sure to click Like! for those who have helped you.
    Click Accept as Solution for posts that have solved your issue(s)!

  • Caller ID not working on 8330 Curve

    Does anyone know how to fix the caller ID on my 8330 curve. Incoming calls from my address book are coming in as "unknown number" - its only some of the contacts, not all. BB supprt and Sprint couldn't figure it out.
    Thanks!

    First, go into the Phone app (press the Green [Call] button), then hit the [Menu] button (button to the LEFT of the TrackBall) and select Options --> Smart Dialing.  Make sure your Country Code and Area Code are set correctly.
    Also, make sure that phone numbers in your Address Book entries are formatted like a phone number.  The most standard format is:
    +1 (123) 123-1234
    for the US. 
    Jerry

  • Help Needed - My BB 8520 Curve has this message-CRTranRec::GetLinkedRecordID:Invalid linked record id while sychronisation using the desktop software

    Hi!
    Need some help with the same:
    Help Needed - My BB 8520 Curve has this message-CRTranRec::GetLinkedRecordID:Invalid linked record id while sychronisation using the desktop software

    Hi sameer197301 and welcome to the BlackBerry Support Community Forums!
    To clarify, are you seeing this message displayed on your BlackBerry® smartphone or on your computer?
    Thanks.
    -CptS
    Come follow your BlackBerry Technical Team on twitter! @BlackBerryHelp
    Be sure to click Kudos! for those who have helped you.Click Solution? for posts that have solved your issue(s)!

  • How do I tethering my blackberry curve with the mac?

    So i do have the tethering plan with att on my blackberry curve, and i downloaded the script from fibble but i just cant figure out how to tether it. it connects to via bluetooth but i just cant get internet.
    plz help

    Use the usb cable that comes with your iPhone to connect it to your Mac. Read the directions that came with the iPhone. Post in the iPhone forums where the iPhone gurus are. Google... Look to the right of your post in the "More Like This" column...

  • Problems with the O2 blackberry data package on my Curve 3G.

    I have already informed O2 about this but they claim that I should be used the blackberry support services, but nothing there helps me!
    I got my Blackberry Curve 3G on September 9th this year and I put on the Blackberry Data Package bolt-on onto my phone on September 16th. I then received a text to say they've taken £5 from my credit and it will be up and running in the next 24 hours. Its now September 19th and my BBM is not working at all and I am extremely upset with the services and behaviour I have received from both O2 and Blackberry.
    Is there any way you can help? If this fails, I shall be forced to go back to the shop from where I got my Blackberry from and ask for their help.
    Many thanks, Jade.

    Can a bubble whistle Problems with the O2 blackberry data package on my Curve 3G.? The seat matures in your oar. The lad ices the pursuing method inside a resident. A judge spins against the vendor! The rose wows the hello. 
    filipina heart

  • Curve 3G keeps deleting my txt messages..

    Hello all
    I have Curve 9300 3G, running on OS 6 (6.0.0.600, platform 6.6.0.223)
    The device is automatically deleting my messages after few feeks, starting from the oldest (they last about 1 month than they are deleted..)
    I have tried to look for an option of "how long to save messages" in the device and couldn't find any.... In the device manual it says and in the device Help\Search it sais the same:
    home->messages->options-> Message Display and Actions , but this sub-category option doesn't appear on my device messages options (i googled it and also ppl said they can't find this option on their curve 3G...)
    i have in option of messages this sub-categories:
    General Text Messaging options, SMS Text, MMS and in none of them  there is an option regarding  how long to keep txt messages...
    *   Memory Cleaning is disabled
    ** Also in some searches in google ppl  said free some memory. it is not the problem.. i have 70 MB free on the device and 7GB free in my memory card.. my BB is new.. only 2 month old
    so where can i set the device settings regarding saving my messages?
    Thanks
    Solved!
    Go to Solution.

    if u read my post carfully u can see  that i know that.. i wrote it in my post..
    i have found out why i don't see this menu: Message Display and Actions, there is a bug in the OS 6 with my BB or just with curve 3G i don't know.. other people reportet my problem as well
    when i go to options of messages it don't get this submenues:
    Message Display and Actions
    Inbox Management
    Email account Managment
    Spell Check
    Text Messaging
    after going to options of messages it goes straight to Text Messaging... and doesn't show thouse 5 sub-menues
    and because of this bug i can't even find "Message Display and Actions" in the general search of the device..
    the solution :
    go to the call logs, then select one of the call logs and press on  home button and select options
    then u see the 5 sub-categories\menues with Message Display and Actions among them, go inside and there u can select the option of how long to keep messages
    took me some time of playing with the device to find this crappy bug and find another way to get this Message Display and Actions..
    hope it will helps other with this bug in the OS

  • Please help! How do you MMS with the Red BB Curve 8330m (4.5.0.131 software/f​irmware) on Sprint ?

    Greetings!!!
    I'm a newbie to BlackBerry devices but a long time user of cell phones and I have just one question which I hope isn't a difficult one to answer.  I don't know if I'm missing something here, but how do you send an picture or photo via MMS?  All I see in my message options is SMS text.
    I just got the new Red BB Curve 8330m with the 4.5.0.131 software/firmware from Sprint.
    I did a search here but didn't find an answer.
    TIA for any help here!
    Mark
    (Ohio)
    Sprint Simply Everything Unlimited Plan
    Solved!
    Go to Solution.

    No problem, if it wasn't for questions there wouldn't be forum, Right?
    So you checked the firewall, and you can receive, that means you have the application,
    Have you ever done a battery pull or sent service books since receiving the device?
    Thanks,
    Bifocals
    Click Accept as Solution for posts that have solved your issue(s)!
    Be sure to click Like! for those who have helped you.
    Install BlackBerry Protect it's a free application designed to help find your lost BlackBerry smartphone, and keep the information on it secure.

  • CS4 Text around a bottom curve but text straight up and down?

    I have to change the names on bottles that were shot and so I am trying to type the names. 1st I tried Photoshop and could not get the 3D to work and could not get the arc or the warp to work correctly.
    So I went over to Illustrator. I finally got it figured out how to get the text on the bottom of the curve and reading corectly... BUT... the text on the R side of the curve, curves into the curve instead of each letter staying straight up and down horizontally. Help please? Nothing like being short on time and having to figure out how to get the text on a curve with the letters staying straight up and down instead of curving into the curve. Thank you!!!

    OK. I did that but now I am trying to copy paste into my Photoshop file but when it comes out of Illustrator... It brings an odd white box that is really messing me up!!! Why won't it let me just copy the text? Why is Illustrator making an extra white box that is blocking my image? Thanks. See the 2 below.  1 is the bottle before I have gotten the name over and the other, is the bottle when I am trying to paste just the text in place. For some reason, Illustrator is adding a white box that is messing me up?  1 is how it should look. 2 is Illustrator is making an extra white box that is covering up most of my bottle.

  • Blackberry Curve HELP with 2 things....​.sending pics via text and calls/SERV​ICE PROVIDER IS SPRINT

    Can it be done?  I am having a hard time figuring that out.  Can I send a picture I take using text feature?  Not having to send via email or using bluetooth?  You know how other phones, you just choose a picture and choose to send the picture and then you choose the contact to send to.... How do I do that with the curve?  I need to send pictures and sending via email doesnt work when I need the picture to go through right away.  Help!
    Also, I have been having this huge problem... I get a phone call or make a phone call and the phone goes back to my screen saver and not the phone call screen where it shows how long you are on the phone, the screen where it shows you are on a phone call.  It has been that sometimes the phone doesnt hang up and since the call stays on the screen saver screen I dont realize it and people on the phone are listening to my conversations.  Or i accidently hit a button without realizing it and it calls someone but I dont know this because the phone doesnt show me its making a phone call and I hear voices.... not in my head, coming from the phone.  Or i make a phone call and think the call didnt go through and start going through phone book and other options on my phone without realizing the person I called is already on the phone.  I hope I made sense. 
    Message Edited by veronicazambran on 03-03-2009 07:30 PM

    Welcme to the Frums!
    Who is your service provider?  
    Nurse-Berry
    Follow NurseBerry08 on Twitter

  • Curve 8530 SMS Text Problems

    My Curve 8530 will receive and send SMS texts ok for a while.  Then, for no reason, I cannot click on an sms and open it.  It will not show the previous texts.  I cannot open the txt to make a reply.  I took this to Verizon, he checked it and said there was definitely a problem, of course didn't have another phone, so ordered me one.  A few days later I got a new (or probably refurbished) 8530.  It's doing the same thing.  So this is either a defect in the phone line or in the software for SMS text messages.  I am very disappointed with Blackberry.  I have had several of their phones, try to keep up with the newest technology even though it always costs me hundredes of dollars for the phones.  I think this will be my last.  If I cannot get this problem resoloved, I am switching to AT&T.

    I got two of these phones and they both are doing it. I do a significant amount of work related texting on my main line 8530... I have to pull the battery anywhere from 5 to 10 times per day. I have contacted Verizon and I'm sending these 8530s back and replacing them with what I had before; the MUCH better, more professional and stable 8330.
    I used my 8330 non-stop for 3 years. Never once had a problem with the trackball (Verizon told me the 8530 fixed the trackball problem---???)... Additionally, in the 3 years of using my 8330 non-stop, I may have had to pull the battery twice, from a lock up. Both times it was when I was actively using Internet, teathered to my laptop and an incoming call came. When I'd answer it, the call would work and when I'd hang up, the phone would crash...
    The 8330 sold me on the Blackberry OS... The 8530 acts more like a Windows OS, IMHO.
    A very dissatisfying experience.

  • Cannot Delete SMS Text Message From My Blackberry Curve -

    I cannot delete a SMS text message from my Blackberry Curve. What are some options I can try that would remove the text message?

    you already reset the device taking out the battery? if yes View your Saved Messages folder and see if it is also there
    If I help you with any inquire, thank you for click kudos in my post.
    If your issue has been solved, please mark the post was solved.

  • Text Message display on Curve 9360

    Hi...just got a new Curve 9360. The default text message display shows all messages i.e. if I've sent a text most recently that is what I see at the top. What I want it to do is show the SMS Inbox (which I can navigate to via the folder options, but I can't find a way to set it as a default). Can't work out how to do it either on the device or when connected to the PC. Any suggestions...?...R

    Do you mean that currently ALL of your email messages and SMS text messages are mixed in one folder when you view, and you want to see a folder on your homescreen of ONLY your SMS text messages? And your email messages in another folder?
    If so, on your device, open that Messages folder > press the Menu key > Options > Inbox Management and check the box on "Text Messages", and save. That will put an SMS Text message folder on your screen.
    1. If any post helps you please click the below the post(s) that helped you.
    2. Please resolve your thread by marking the post "Solution?" which solved it for you!
    3. Install free BlackBerry Protect today for backups of contacts and data.
    4. Guide to Unlocking your BlackBerry & Unlock Codes
    Join our BBM Channels (Beta)
    BlackBerry Support Forums Channel
    PIN: C0001B7B4   Display/Scan Bar Code
    Knowledge Base Updates
    PIN: C0005A9AA   Display/Scan Bar Code

Maybe you are looking for

  • Display attributes from "global" and other entities in a single screen

    As far as I know, in OPM attributes of only one type of entity can be added to any given screen. As per of functional requirements of my current project Ihave to display attributes from more than one type of entity in some of the screens. I found a w

  • Firefox is no longer compatible with a screen reader programs why?

    Firefox 4.0 is no longer compatible with screen reader programs such as zoom text. I'm a visually impaired user and have never had problems until now. I want to revert back to 3.5 because now 4.0 is useless to me. If it isn't broken don't fix it. Moz

  • Transfer posting for diferred taxes

    Hellow, When i execut the transaction S_alr_87012360 i have a table in the down with documents wich tax is not transferred, and i have these error codes : 2.The document contains items whose posting key is marked as payment 6.Tax account was posted t

  • PI7.0 PIAFUSER, PIDIRUSER, PIRWBUSER, PIREPUSER getting locked.

    Hello, I have two PI systems PID and PIQ. PID has central SLD and PIQ is configured to use central SLD during installation. The PI users in PID and PIQ have different passwords. I have noticed following users are getting locked in PID. PIAFUSER, PIDI

  • Where is  the UserMonitor service?

    Hi, Based on URL below, one may find the UserMonitor Service at com.sap.portal.runtime.application.monitor. However, I could not find the service, anyway. Where Could I find the service? http://help.sap.com/saphelp_ep60sp2/helpdata/en/f6/bde7e525643e